IT序号网

java用于 SpringMVC 应用程序的 RESTful API

unruledboy 2023年06月12日 程序员 116 0

对于基于 SpringMVC (3.0.1) 堆栈构建的现有 GUI webapp,我想公开一个 RESTful API。您认为什么是合理的选择?

  1. 与 Jersey 等其他框架集成(似乎从头开始)?
  2. 使用 JAXB/Jackson 的内置 SpringMVC 集成?
  3. 我是否应该将另一个 servlet 映射 /api/* 添加到同一个 DispatchServlet?
  4. 所有 View 都用 jsp 编码。我应该为我的 XML API 使用 jsp 模板吗?
  5. 构建一个具有共同依赖项的单独的新 Web 应用程序?
  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> 

还有我的 spring 上下文描述符:

<?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> 

提前致谢;欢迎使用映射示例:-)

请您参考如下方法:

我会回答您的一些问题...

集成/分离:我建议您构建与 WEB GUI 分离的 REST 应用程序。人们构建 API 的一个重要原因是将其暴露给多个应用程序,因此我不会将 WEB GUI 与 API 联系得如此紧密。这种思想符合整个关注点分离的概念。例如,如果您稍后构建一个移动应用程序来访问相同的 API,那么即使您需要为部署取消 WEB GUI,也不会受到影响。

Jackson/JAXB:我强烈推荐 Jackson。在我看来,它是性能和功能的最佳组合。

Spring MVC/Jersey:出于以下几个原因,我建议坚持使用 Spring:

1.) 学习曲线较少,如果您已经熟悉 Spring,那么坚持使用它没有错。

2.) 今天 Jersey 的依赖注入(inject)或多或少被破坏了 (http://java.net/jira/browse/JERSEY-517)。因此,如果您像我一样习惯了它在 Spring 中的表现,那么切换到 Jersey 将会很痛苦。这应该在 2.0 版本中解决,但尚未最终确定。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!