在Java中提供RESTful JSON API

时间:2013-06-13 09:38:27

标签: java json web-services api

在Java中提供RESTful JSON API的惯用方法是什么?您是否使用JAX-WS和XML注释(@XmlElement等)?如何将带注释的对象序列化为JSON(使用Jackson或类似的库)?如何将域对象与发送给API的对象分开?

我了解Java,我希望您指出有关这些主题的良好资源和最佳实践。

谢谢!

3 个答案:

答案 0 :(得分:3)

我已经愉快地使用了Jersey / JAX-RS,但我建议你 Spring MVC 3 ,不仅是对于其余的api支持,还有其他有趣的东西,如IoC或bean可能会变成很有用。

这里有一个链接,可以参考:http://blog.springsource.org/2009/03/08/rest-in-spring-3-mvc/

是的,我用Jackson和Spring作为解析器。 :)


一些代码(基本上用你的说法标记你的bean,使用@XmlRootElement并使用@Path来标记API)

<强> JAX-RS

豆:

@XmlRootElement
public class Response {

  private String result;
  private String message;

  //getter and setter
}

API:

@Path("rest/user")
@Produces(MediaType.APPLICATION_JSON)
public class UserService {

  @POST
  @Path("/login")
  public Response login(
        @FormParam("username") String username,
        @FormParam("password") String password
  ) {
      // Your logic here
  }
}

<强>弹簧

API:

@Controller
@RequestMapping("/user")
public class UserService {

  @RequestMapping(method = RequestMethod.POST, value="/login", headers="Accept=application/json")
  public @ResponseBody Response login(
        @RequestParam(value = "user", defaultValue = "") String email,
        @RequestParam(value = "password", defaultValue = "") String password,
        HttpServletRequest request
        ) {
    // Your logic here
  }
}

答案 1 :(得分:2)

我只需使用Play来为我节省大量已经完成的工作。 该链接适用于Play 1.2,当前版本为2.1时,它也应该适合。

答案 2 :(得分:2)