在Java中提供RESTful JSON API

Jak*_*han 5 java api json web-services

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

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

谢谢!

Enr*_*man 3

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

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

顺便说一句,我使用 Jackson 和 Spring 作为解析器。:)


一些代码(基本上如您所说,使用 @XmlRootElement 标记您的 bean,并使用 @Path 标记 API)

JAX-RS

豆角,扁豆:

@XmlRootElement
public class Response {

  private String result;
  private String message;

  //getter and setter
}
Run Code Online (Sandbox Code Playgroud)

应用程序编程接口:

@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
  }
}
Run Code Online (Sandbox Code Playgroud)

春天

应用程序编程接口:

@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
  }
}
Run Code Online (Sandbox Code Playgroud)