- 首選看源碼注釋:
/* 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.
