如何将web服务与html响应控制器解耦



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

我关心的是我应该采用哪一种方法:

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

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

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

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

  1. 让您专注于WS代码中的WS内容和UI代码中的UI内容。
  2. 使两者的代码库更容易维护,因为每个代码中只包含所需的部分,因此(可以说)代码更少。
  3. 允许您根据最适合WS应用程序的方式和最适合UI应用程序的方式对WS端做出特定的决策,而不必妥协,因为它们是紧密相连的。
然而,有些人可能会认为你可能增加了很多复杂性。但是,我认为职责分离总是一件好事,而且会产生更清晰、更好的解决方案。

最新更新