如何将Web服务与html响应控制器分离?

时间:2014-06-26 10:30:49

标签: java web-services spring-mvc

我正在使用Spring MVC来构建一个Web应用程序,其长期目标是将其构建为一个Web服务,该服务将由多个客户端(web,android,iphone等)使用,但是要构建一个快速原型I我正在寻找构建将作为html响应的Web应用程序(由于缺乏前端MVC框架的专业知识)。计划是稍后将Web应用程序转换为由Web服务apis提供的单页应用程序。

我担心的是我应该采用哪两种方法:

  1. 首先通过一个应用程序公开控制器来构建一个Web服务,该应用程序提供基于JSON的API和另一个实际与Web服务交互的Web应用程序(单独部署)。这使我们的Web服务可供其他客户使用。

  2. 第二种方法可能不是通过控制器暴露我们的api,我们可以在控制器下面创建另一层,为api提供全部基础,然后我们使用一组控制器来为web服务服务器端模板处理。 稍后我们可以公开另一组控制器,这些控制器将使用地面API并将其转换为Web服务API。这些控制器可以映射到单独的URL,也可以通过为响应内容类型设置一些参数或设置接受头来使用相同的URL。

  3. 请告诉我哪两种方法更好?第一个优点是,一旦我们构建了Web服务,它就可以立即被其他客户端使用。 另一方面,第二种方法让我们优化部署两个不同应用程序的带宽和开销。

1 个答案:

答案 0 :(得分:0)

我不喜欢控制器呼叫控制器的想法(我相信这就是你在#2中的意思)。我也喜欢分离代码职责的想法。如果您希望WS API真正与客户端分离,那么您的代码也应该是独立的。我也认为这是一个更好的设计,因为它

  1. 让您专注于WS代码中的WS事物和UI代码中的UI事物。
  2. 使两者的代码库更容易维护,因为每个代码中都会有(可以说)更少的代码,因为它们只包含那里需要的部分。
  3. 允许您根据对WS应用程序和UI端的最佳选择,根据UI应用程序的最佳选择做出针对WS端的特定决策,而不必妥协,因为他们在时尚界联合起来。
  4. 有些人可能会说你可能会增加很多复杂性。但是,我认为职责分离总是一件好事,可以提供更清洁,更好的解决方案。