请教 DispatherServlet 关于资源映射 URI 路径消失的问题。。

2019-08-09 11:36:38 +08:00
 yyConstantine

背景: 目前在给公司的一个老后台项目做 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

2708 次点击
所在节点    Java
1 条回复
Luckydan
2019-08-09 17:43:51 +08:00
需要确认一下上下文路径是不是本身就包含 /api-docs/MyProjectApi/,才导致 DispatherServlet 拦截的路径为 /xxx-controller

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/590410

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX