swagger3接口文档 发布到服务器上时会出现的问题
众所周知 swagger很方便 我们在接口上加个注解就能自动更新文档ui界面,这样就会出现一个问题,如果我把项目发到服务器上,正好我的服务器配置了用名称分流量的路由。这个时候我swagger默认的接口地址,就会少一层。
例如我公司服务器 ip:port/project1是第一个项目;相同的ip:port/porject2是第二个项目。
而整个路径中的project1和project2是在路由上体现的。我项目中是不会写servlet.context-path的。
就是说 我在本地访问swagger ui的地址是 localhost:8080/swagger-ui/index.html
而我在服务器上访问相同项目的swagger ui 时 地址变成了 ip:port/project/swagger-ui/index.html
这个时候不管是在本地还是服务器上 swagger-ui界面里点execute的时候调用的接口地址分别是localhost:8080/apiName 和 ip:port/apiName
而服务器上正确的接口地址应该是ip:port/project/apiName
答案很简单但是我在网上搜了好久都没有搜到。可能是太简单了所有人都觉得 这个东西是默认 知道的吧。
就是在配置docket的时候 加一行 .pathMapping("/接口前缀")
加上这个东西之后swagger-ui的地址是不会变得 只是改变了swagger页面内的接口地址
这里是pathmapping方法的源码
pathmapping可以用参数传 把参数写在yml里
因为这样配置后 服务器上的接口地址是正确的 但是本地的接口地址就会多一层 或者发到其他服务器的时候 地址是不对的 所以这个地方要写成动态的