「swagger」 给API增加全局Header信息

「swagger」 给API增加全局Header信息

对于swagger大家都不陌生,团队前后端分离文档是必不可少的。在使用文档时,部分接口是需要在header中添加token等的认证信息,通过header参数是也可以,但是,每个接口都得写,作为程序猿,这个怎能容忍,一定要做个一劳永逸的配置,才符合我们的气质。

配置

@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Value("${maven.project.version:null}")
private String projectVersion;
@Value("${maven.project.description:null}")
private String projectDescription;
@Value("${maven.build.time:null}")
private String projectBuildTime;
@Value("${spring.application.name:null}")
private String applicationName;
public SwaggerConfig() {
}
@Bean
public Docket createRestApi() {
return (new Docket(DocumentationType.SWAGGER_2)).apiInfo(this.apiInfo()).select().apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).paths(PathSelectors.any()).build().securitySchemes(this.security()).securityContexts(this.securityContexts());
}
private ApiInfo apiInfo() {
return (new ApiInfoBuilder()).title(this.applicationName + " API文档").description("BUILD TIME: " + this.projectBuildTime + "\\n" + this.projectDescription).version(this.projectVersion).build();
}
private List<apikey> security() {
return Arrays.asList(new ApiKey("JWT Token", "Authorization", "header"), new ApiKey("用户id", "user_id", "header"), new ApiKey("用户来源", "user_from", "header"));
}
private List<securitycontext> securityContexts() {
List<securitycontext> securityContexts = new ArrayList(1);
securityContexts.add(SecurityContext.builder().securityReferences(this.defaultAuth()).build());
return securityContexts;
}
List<securityreference> defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[]{authorizationScope};
List<apikey> apiKeys = this.security();
List<securityreference> securityReferences = new ArrayList(apiKeys.size());
Iterator var5 = apiKeys.iterator();
while(var5.hasNext()) {
ApiKey item = (ApiKey)var5.next();
securityReferences.add(new SecurityReference(item.getName(), authorizationScopes));
}
return securityReferences;
}
}
/<securityreference>/<apikey>/<securityreference>/<securitycontext>/<securitycontext>/<apikey>

对应的前端页面

「swagger」 给API增加全局Header信息


分享到:


相關文章: