2012-10-26 3 views
2

Для существующего GUI webapp, построенного на стеке SpringMVC (3.0.1), я хочу открыть API RESTful. Что вы считаете разумным вариантом?RESTful API для приложения SpringMVC

  1. Интеграция с другой структурой, такой как Джерси (похоже, перезапуск с нуля)?
  2. Использовать встроенную интеграцию SpringMVC JAXB/Jackson?
  3. Должен ли я просто добавить еще один сервлет-картографирование /api/* к тому же DispatchServlet?
  4. Все виды кодируются в jsp. Должен ли я использовать jsp-шаблоны для моего XML-API?
  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> 

Спасибо заранее; Примеры картографирования являются желанными :-)

ответ

3

я принять удар на некоторые из ваших вопросов ...

Интеграция/Отдельные: Я бы порекомендовал вам построить приложение REST отдельно от GUI WEB. Большая причина, по которой люди создают API, заключается в том, чтобы разоблачить ее для нескольких приложений, поэтому я не буду так тесно связывать веб-интерфейс с API. Эта мысль согласуется с концепцией полного разделения проблем. Например, если позже вы создадите мобильное приложение для доступа к одному и тому же API, это не будет затронуто, если вам нужно снять свой веб-интерфейс для развертывания.

Jackson/JAXB: Я бы очень рекомендовал Джексона. На мой взгляд, это лучшее сочетание производительности и функциональности.

Spring MVC/Джерси: Я бы рекомендовал придерживаться Spring по нескольким причинам:

1.) меньше кривой обучения, если вы знакомы с Spring уже нет ничего плохого придерживающийся Это.

2.) Инъекционная инъекция в Джерси сегодня более или менее разрушена (http://java.net/jira/browse/JERSEY-517). Поэтому, если вы привыкли к тому, насколько хорошо это работает весной, как я, переход на Джерси будет болезненным. Это должно быть рассмотрено в версии 2.0, но это еще не завершено.

1

Это зависит от нескольких факторов. Первый вопрос, который я задал бы, касается производительности. Если у вас есть только один webapp, пользователи GUI или пользователи WS могут перегружать сервер. Итак, может быть, лучшее решение состоит в том, чтобы иметь 3 разных артефакта.

GUI WebApp WS WebApp Business Common Артефакт

И вы можете нагнетать каждый веб-приложение в соответствии с вашими потребностями.

Надеюсь, это поможет.

Смежные вопросы