簡體   English   中英

適用於SpringMVC應用程序的RESTful API

[英]RESTful API for a SpringMVC app

對於基於SpringMVC(3.0.1)堆棧構建的現有GUI webapp,我想公開RESTful API。 您認為合理的選擇是什么?

  1. 與Jersey等其他框架集成(似乎從頭開始重啟)?
  2. 使用JAXB / Jackson內置的SpringMVC集成?
  3. 我應該在同一個DispatchServlet添加另一個servlet-mapping /api/*嗎?
  4. 所有視圖都以jsp編碼。 我應該為我的XML API使用jsp模板嗎?
  5. 構建一個具有公共依賴關系的單獨的新webapp?
  6. 還要別的嗎?

以下是我的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM