「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信息


分享到:


相關文章: