晚上所有:)
我正在寻找创建Java Web应用程序。我设想它将使用Spring Web MVC和JSP,但是我想将某些功能公开为REST调用,这样我就可以创建一个Android客户端。
春天在这方面有什么可以帮助我吗?如何将REST代码和Web前端代码分开,而不必维护我的应用程序的两个版本(一个用于Web,一个用于REST客户端)。
不寻找勺子喂食,只是我应该开始阅读的一些指示。
答案 0 :(得分:5)
正如其他人所提到的,Spring现在拥有相当不错的内置REST支持。与注释结合使用时,可以非常简单地设置RESTful API。可以使用不同的view resolvers配置Spring,例如,可以根据Accept
标头自动响应不同的数据视图。因此,您可以从相同的数据中自动返回JSON或JSP,请参阅ContentNegotiatingViewResolver。您的控制器和模型可以是常见的并实现一次,将工作保留在视图层中。
我之前使用过这种方法,当请求是通过AJAX返回JSON时,以及在浏览器访问时使用相同数据构建的JSP视图。
答案 1 :(得分:4)
Jersey是一个非常漂亮的工具。它与Spring,Guice和Jackson等工具很好地集成,为您提供了一种创建RESTful资源的无缝方式。
答案 2 :(得分:4)
Jersey非常简单,效果很好,并且可以作为引导的参考实现。此外,它还有一些不错的REST客户端支持,其中很多可能会成为JAX-RS规范。
在与Spring MVC结合方面,我建议您确保为应用程序建模,以便拥有提供所需核心功能的外观(服务类),然后根据需要在MVC中引用它们代码或REST代码。你不应该重复业务逻辑
答案 3 :(得分:2)
您可以使用Spring 3.0执行此操作。 Spring 3.0的出现能够指定@PathVariable
来从URL路径中提取值(以前在Spring MVC中这并不容易)。
您还可以使用@RequestMapping
来指定控制器中每个方法应该响应的HTTP方法。
我还使用Spring Security来实现API密钥类型的功能。这样,您可以以易于REST客户端实现的方式限制对API的访问。我不得不扩展org.springframework.web.filter.GenericFilterBean并添加一个正确的身份验证
SecurityContextHolder.getContext().setAuthentication(apiKeyAuth)
答案 4 :(得分:1)
Spring 3.0 MVC中有一个新的REST API:
http://blog.springsource.com/2009/03/08/rest-in-spring-3-mvc/
答案 5 :(得分:1)
Apache CXF与Spring集成良好,并提供了许多公开服务的方法。从CXF主页的概述部分:
CXF帮助您建立和发展 使用前端编程的服务 API,如JAX-WS和JAX-RS。这些 服务可以说各种各样的 SOAP,XML / HTTP等协议 RESTful HTTP,或CORBA,并在一个 各种传输,如HTTP, JMS或JBI。