问题描述
测试环境用了nginx做二级url做映射,但swagger的
http://www.xxx.com/二级url/v2…JSON里面的host地址还是一级目录,不自动对应nginx做了映射的二级url,因此使用swagger-ui.html在线调试API接口,就出问题,请求不到服务报404。
解决方法
在配置直接设置Docke的host就可以了,网上搜索一堆完全没找到这个问题的解决方案,最后翻了源码找到host()方法。
application.yml
swagger:
host: www.xxx.com/二级url
Swagger配置类
@Configuration
public class SwaggerConfig {
@Value("${swagger.host}")
private String swaggerHost;
@Bean
public Docket customDocket() {
Docket docket=new Docket(DocumentationType.SWAGGER_2);
if(StringUtils.isNotBlank(swaggerHost)){
docket=docket.host(swaggerHost);
}
docket=docket.apiInfo(apiInfo())
.useDefaultResponseMessages(false)
.select()
.apis(RequestHandlerSelectors.basePackage("com.xxx.xxx.web"))
.paths(PathSelectors.any())
.build();
return docket;
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("API接口文档")
.description("API接口文档")
.contact(new Contact("xx", "http:/xxx.com", "xxxx@qq.com"))
.version("1.0")
.build();
}
}