问题
将Springboot利用部署到服务器上 通过域名拜访swagger-ui(通过了Nginx代理) 进行前后端联调 然而理论点击执行的时候 提醒: TypeError: Failed to fetch
如 swagger-ui拜访地址是:
https://foo.com/test/api/insurance/swagger-ui/index.html
点击执行 调用后端接口的地址 变成了
http://foo.com:80/solvStaInfos
因为通过Nginx代理 理论后端地址应该是
https://foo.com/test/api/insurance/solvStaInfos
解决
swagger-ui页面上地址取自接口:/v3/api-docs
中的返回
servers: [ { url: "http://foo.com:80", description: "Inferred Url" }],
批改此地址为https://foo.com/test/api/insurance
即可
办法一
Nginx动静批改接口返回内容
location /test/api/insurance/v3/api-docs { sub_filter 'http://foo.com:80' 'https://foo.com/test/api/insurance/'; sub_filter_types application/json; proxy_pass ...;}
注: 须要Nginx反对 即蕴含对应的module
办法二
代码层面批改
@Componentpublic class SpringfoxSwaggerHostResolver implements WebMvcOpenApiTransformationFilter { @Override public OpenAPI transform(OpenApiTransformationContext<HttpServletRequest> context) { OpenAPI swagger = context.getSpecification(); Server server = new Server(); server.setUrl("https://foo.com/test/api/insurance/"); swagger.setServers(Arrays.asList(server)); return swagger; } @Override public boolean supports(DocumentationType delimiter) { return DocumentationType.OAS_30.equals(delimiter); }}