在 Java 中提供 RESTful JSON API 的惯用方式是什么?您是否使用 JAX-WS 和 XML 注释(@XmlElement 等)?您如何将带注释的对象序列化为 JSON(使用 Jackson 或类似库)?您如何将域对象与发送到 API 的对象分开?
我了解 Java,我希望您指出有关这些主题的良好资源和最佳实践。
谢谢!
在 Java 中提供 RESTful JSON API 的惯用方式是什么?您是否使用 JAX-WS 和 XML 注释(@XmlElement 等)?您如何将带注释的对象序列化为 JSON(使用 Jackson 或类似库)?您如何将域对象与发送到 API 的对象分开?
我了解 Java,我希望您指出有关这些主题的良好资源和最佳实践。
谢谢!
我已经愉快地使用了 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
}
接口:
@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
}
}
春天
接口:
@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
}
}
我会简单地使用Play来为我节省很多已经完成的工作。该链接适用于 Play 1.2,虽然当前版本是 2.1,但它也应该适合该版本。
我在 Jersey 和 Jackson 方面有很好的经验,甚至在 Android、JBoss 或 Tomcat 方面也是如此。看:
http://www.mkyong.com/webservices/jax-rs/restful-java-client-with-jersey-client/ 和 http://www.mkyong.com/webservices/jax-rs/json-example-with -泽西杰克逊/
或者