spring如何同时提供web端和app端接口

像京东等电商类应用,web端和移动端都可以访问的情况。我们知道controller只能在同一时间要么返回modelandview,要么返回json,如何同时满足两种情况?
目前想到的实现方式:通过不同的controller来实现,url不一样。有没有只用同一个controller来完成的? 主流的这些电商应用或者类似的应用解决方案是什么?

问得不够好,应该再区分:前后端分离与否的情况

阅读 8.3k
9 个回答

对于 Web 端 和 移动端 来说是同一个后端服务 api 的 url, 而后端可以不由同一个 controller 提供。
具体做法:增加一层 api 服务网关,判断是哪种客户端来访问,然后路由到真正的服务上去。服务网关可以用 NGINX 搭,也可以 Spring 自己做。

正好写过这个问题 ,把三层的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端的请求参数与返回参数相同的情况下,是可以调同一个接口处理的

新手上路,请多包涵

直接写返回json的,页面的可以不用。界面拿到json再解析

看这样行不行,web端可以使用静态页,用ajax获取数据,然后处理.后台只需要一个接口,返回统一的json即可吧.并不是一定要返回页面的.

前后端分离,后端专注于数据提供,这样就不管是web还是客户端,接口返回是相同的。

现在很少会有返回 ModelAndView 了,前后端分离基本上是后端渲染或前端渲染加上 RESTful 接口。而且 WEB 和
APP 的参数处理可能不同,基本上也还是拆开按不同接口去做吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏