我正在使用Spring MVC来构建一个web应用程序,其长期目标是将其构建为应由多个客户端(web, android, iphone等)消费的web服务,但要构建一个快速原型,我正在寻找构建web应用程序,作为html响应(由于缺乏前端MVC框架的专业知识)。我们的计划是,以后的web应用程序将变成由web服务api提供服务的单页应用程序。
我关心的是我应该采用哪一种方法:
-
首先通过一个提供基于JSON API的应用程序和另一个实际与web服务交互的web应用程序(单独部署)暴露控制器来构建web服务。这使得我们的web服务可以被其他客户端使用。
-
第二种方法不是通过控制器暴露我们的api,我们可以在控制器下面有另一层,它将为api提供所有的基础,然后我们暴露一组控制器,使用服务器端模板处理来服务web。稍后,我们可以公开另一组控制器,它们将使用地面API并将其转换为web服务API。这些控制器可以映射到单独的url,也可以是相同的url,可以通过为响应内容类型添加一些参数或设置接受头来使用。
请告诉我两种方法中哪一种更好?first的优点是,一旦我们构建了web服务,它就可以立即被其他客户端使用。另一方面,第二种方法让我们优化部署两个不同应用程序的带宽和开销。
我不喜欢让控制器调用控制器的想法(我相信这就是你在#2中的意思)。我也喜欢代码职责分离的想法。如果您希望您的WS API真正与您的客户端分开,那么您的代码也应该分开。我也认为这是一个更好的设计,因为它
- 让您专注于WS代码中的WS内容和UI代码中的UI内容。
- 使两者的代码库更容易维护,因为每个代码中只包含所需的部分,因此(可以说)代码更少。
- 允许您根据最适合WS应用程序的方式和最适合UI应用程序的方式对WS端做出特定的决策,而不必妥协,因为它们是紧密相连的。