前言:
@RestController注解相当于@ResponseBody + @Controller合在一起的作用
正文:
一。swagger接口测试报错404
二。问题定位
首先想到是否是controller层,接口地址写错,通过查看,没有任何问题:
其次,再仔细看了错误信息:与jsp有关,目前是前后端分离,前端采用Angular工程独立部署,怎么会出现jsp的问题呢?
再深入思考,前后端没有分离之前,一般采用的jsp,那就跟之前的实现原理有关,继而想到了controller层的注解,这回找到了问题的根源:
三。具体原理解析
1.在controller层添加注解@RestController,则Controller层方法无法返回jsp页面或者htm,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容即为return的内容
2.如果需要返回jsp或者html,则需要@Controller配合视图解析器InternalResourceViewResolver
如果需要返回JSON,XML或者自定义mediaType内容到页面,需要在相应的方法上加@ResponseBody注解。
四,问题解决方案
将@Controller注解更改为@RestController,因为目前公司项目是前后端分离的,以Restful风格进行前后端交互,Controller层无需返回jsp或者html,需要的是JSON.
结语:
在项目中锻造,在错误中成长。
巨人肩膀:https://www.cnblogs.com/shuaifing/p/8119664.html