背景: 目前在给公司的一个老后台项目做 swagger 集成,由于是 spring3.x 的版本所以选择了 swagger-springmvc1.0.2 的版本。(其实自己也没正儿八经的用过 swagger。。) 完成了相关配置后,进入了 Swagger-UI.html 的界面,但是没有显示 api,看了下控制台是请求 api 的资源全部 404 了,于是拎出来了其中一条在 MVC 里进行 debug,发现经过 DispatherServlet 拦截后传入的 uri 由 /api-docs/MyProjectApi/xxx-controller 变成了 /xxx-controller,所以 404 了,但直接访问 /api-docs 是不会报错的。。这是为什么。。
PS:为什么在发现经过 DispatherServlet 加这两个资源的拦截?因为是老项目,之前的接口都是以.do 的后缀结尾的,不拦截的话会收不到请求。。。
代码如下:
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>/api-docs</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>/api-docs/MyProjectApi/*</url-pattern>
</servlet-mapping>
debug 图: 请求路径: http://localhost:8080/projectName/api-docs 请求路径: http://localhost:8080/projectName/api-docs/MyProjectApi/vc-card-terminal-controller
1
Luckydan 2019-08-09 17:43:51 +08:00
需要确认一下上下文路径是不是本身就包含 /api-docs/MyProjectApi/,才导致 DispatherServlet 拦截的路径为 /xxx-controller
|