像京东等电商类应用,web端和移动端都可以访问的情况。我们知道controller只能在同一时间要么返回modelandview,要么返回json,如何同时满足两种情况?
目前想到的实现方式:通过不同的controller来实现,url不一样。有没有只用同一个controller来完成的? 主流的这些电商应用或者类似的应用解决方案是什么?
问得不够好,应该再区分:前后端分离与否的情况
像京东等电商类应用,web端和移动端都可以访问的情况。我们知道controller只能在同一时间要么返回modelandview,要么返回json,如何同时满足两种情况?
目前想到的实现方式:通过不同的controller来实现,url不一样。有没有只用同一个controller来完成的? 主流的这些电商应用或者类似的应用解决方案是什么?
问得不够好,应该再区分:前后端分离与否的情况
正好写过这个问题 ,把三层的MVC分成 View - Controller - Service - Repository 四层,其中Repository负责数据存储,Service负责真正的业务逻辑,Controller负责与用户界面有关的逻辑,View负责与用户交互
AOP,MVC——Spring的学习以及对CodeIgniter的反思 - QueenKing - SegmentFault https://segmentfault.com/a/11...
如果你需要满足这两种情况可以参考这样
@RequestMapping(value = "/test")
public ModelAndView test() {
Map<String, Object> map = new HashMap<String, Object>(2);//map塞入你需要填入页面的数据
map.put("json", "dataValue");
return new ModelAndView("test.html",map);
}
目前主流电商业务都是前后端分离,前端独立工程化,后端只提供返回数据的接口。
前后端分离的话后端只负责接口的编写,前端负责调用接口,因此web端和 app端的接口其实是同一类的。换句话说,如果web端和app端的请求参数与返回参数相同的情况下,是可以调同一个接口处理的
现在很少会有返回 ModelAndView 了,前后端分离基本上是后端渲染或前端渲染加上 RESTful 接口。而且 WEB 和
APP 的参数处理可能不同,基本上也还是拆开按不同接口去做吧。
3 回答2.7k 阅读✓ 已解决
3 回答4.1k 阅读✓ 已解决
8 回答3.6k 阅读
4 回答2.7k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.6k 阅读✓ 已解决
3 回答1.7k 阅读✓ 已解决
对于 Web 端 和 移动端 来说是同一个后端服务 api 的 url, 而后端可以不由同一个 controller 提供。
具体做法:增加一层 api 服务网关,判断是哪种客户端来访问,然后路由到真正的服务上去。服务网关可以用 NGINX 搭,也可以 Spring 自己做。