[英]RESTful API for a SpringMVC app
對於基於SpringMVC(3.0.1)堆棧構建的現有GUI webapp,我想公開RESTful API。 您認為合理的選擇是什么?
DispatchServlet
添加另一個servlet-mapping /api/*
嗎? 以下是我的web.xml:
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<welcome-file-list>
<welcome-file>home.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>spring-mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring-mvc</servlet-name>
<url-pattern>/web/*</url-pattern>
</servlet-mapping>
</web-app>
我的春天上下文描述符:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context" xmlns:security="http://www.springframework.org/schema/security" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"
>
<context:component-scan base-package="net.mycrub.poc.controllers" />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/views/"
p:suffix=".jsp"
p:viewClass="org.springframework.web.servlet.view.JstlView" />
</beans>
提前致謝 ; 歡迎映射示例:-)
我會抓住你的一些問題......
集成/分離 :我建議您將IDE應用程序與WEB GUI分開構建。 人們構建API的一個重要原因是將其暴露給多個應用程序,因此我不會將WEB GUI與API緊密聯系在一起。 這種思想符合整個關注點分離的概念。 例如,如果您稍后構建移動應用程序以訪問相同的API,則在您需要關閉WEB GUI進行部署時,它不會受到影響。
傑克遜/ JAXB :我強烈推薦傑克遜。 在我看來,它具有最佳的性能和功能組合。
Spring MVC / Jersey :我建議堅持使用Spring有幾個原因:
1.)學習曲線越少,如果你對Spring已經熟悉,堅持下去就沒有錯。
2.)今天在澤西島的依賴注入或多或少地被破壞了(http://java.net/jira/browse/JERSEY-517)。 因此,如果你習慣於像春天一樣在Spring工作,那么切換到Jersey會很痛苦。 這應該在2.0版本中得到解決,但尚未最終確定。
這取決於幾個因素。 我要問的第一個問題是性能問題。 如果您只有一個Web應用程序,則GUI用戶或WS用戶可能會使服務器過載。 因此,也許更好的解決方案是擁有3種不同的工件。
GUI WebApp WS WebApp Business Common Artifact
您可以根據需要升級每個Web應用程序。
希望能幫助到你。
這個問題已有幾年歷史了,無論如何,今天合理的方法是將Spring webapp遷移到Spring Boot,包括Spring Data REST模塊。 所有JPA存儲庫都將作為全面且可發現的REST API自動導出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.