1. 首选看源码注释:
/* Extensibility mechanism to add a servlet path mapping, if there is one, to the apis base path.
扩展性机制,用于将servlet路径映射(如果有)添加到API基本路径。
**/
public Docket pathMapping(String path) {
this.pathMapping = ofNullable(path);
return this;
}
2.我的理解:
2.1 它是一个附加虚拟路径,并没有映射产生对应到上@RequestMapping里面的路径。 所以你后端跑,配置上pathMapping用的话会报404.
2.2 它会作用到生成swagger-doc里的api路径拼接 http://host:port/pathmapping/apiurl。
2.3 在前后端分离架构上, swagger使用iframe方式嵌套,生成的地址都是前端暴露的地址端口,后端请求转发都需要拼接关键字 “dev-api”
来标记区别是请求nginx静态资源,然后由proxy判断 关键字转发到后端接口, proxy会rewrite到后端地址+端口时,通常会去掉关键字“dev-api”.所以swagger生成的docs
如果在此环境下需要配置上pathMapping 让它生成的文档地址里带上 关键字。这样swagger的api也是通过前端端口转发访问到后端了。
2.4 假如要后端直接访问,那么要去掉 pathMapping. 这个就是经常遇到的问题key.