问题

将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);    }}