使用Swagger在局域网的开发中是非常方便的,但如果项目需要异地进行开发的话,比如通过Nginx设置反向代理后,那么swagger的host域名需要设置成外网地址,而且有时会通过请求头的参数来识别某些信息。
1、host域名设置比较简单,只需要在swagger配置文件中 设置host();
2、添加请求头参数的话,通过 globalOperationParameters()方法 将请求头参数添加进去。
在bootstrap.properties中设置域名为 swagger.host的值
spring.application.name=datacenter
spring.profiles.active=dev
swagger.host=xxx.xxx.xxx:8080
swagger配置文件如下:
@Configuration
@EnableSwagger2
@PropertySource(value = "classpath:bootstrap.properties" ,ignoreResourceNotFound=true)
public class SwaggerConfig {
@Value("${swagger.host}")
private String host;
@Bean
public Docket api() {
//添加head参数start
ParameterBuilder tokenPar = new ParameterBuilder();
List<Parameter> pars = new ArrayList<Parameter>();
tokenPar.name("real_source_ip").description("本机局域网IP").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
pars.add(tokenPar.build());
return new Docket(DocumentationType.SWAGGER_2)
.host(host)
.select()
.apis(RequestHandlerSelectors.
basePackage("com"))
.paths(PathSelectors.any())
.build()
.globalOperationParameters(pars);
}
}
swagger-ui.html效果如下: