<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
然后在啟動(dòng)springboot的啟動(dòng)類增加一個(gè)注解碟嘴,@EnableOpenApi 就OK了。
不是swagger的問題力九,各種配置也都對(duì),問題就在于邑闺,參數(shù)名跌前!“Authorization” 這個(gè)header是用來(lái)存認(rèn)證信息的,因?yàn)檫@次做的也正式認(rèn)證接口陡舅,認(rèn)證信息從這個(gè)header中獲取抵乓。
結(jié)果正常的寫法就無(wú)法獲取這個(gè)header了。
swagger是有通用的或者叫做全局的添加認(rèn)證信息的設(shè)置的靶衍,就比如你的接口都需要檢查token就可以給所以的接口設(shè)置統(tǒng)一的token灾炭。
具體的開啟如下:
@Bean
public Docket createRestApi() {
//返回文檔摘要信息
return new Docket(DocumentationType.OAS_30)
.apiInfo(apiInfo())
.select()
//.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.apis(RequestHandlerSelectors.withMethodAnnotation(Operation.class))
.paths(PathSelectors.any())
.build()
.securitySchemes(securitySchemes())
.securityContexts(securityContexts());
//.globalRequestParameters(getGlobalRequestParameters());
//.globalResponses(HttpMethod.POST, getGlobalResonseMessage());
}
private List<SecurityScheme> securitySchemes() {
List<SecurityScheme> securitySchemes = new ArrayList<>();
securitySchemes.add(new ApiKey("Authorization", "Authorization", "header"));
return securitySchemes;
}
private List<SecurityContext> securityContexts() {
List<SecurityContext> securityContexts = new ArrayList<>();
securityContexts.add(SecurityContext.builder()
.securityReferences(defaultAuth())
.forPaths(PathSelectors.regex("^(?!auth).*$")).build());
return securityContexts;
}
private List<SecurityReference> defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
List<SecurityReference> securityReferences = new ArrayList<>();
securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
return securityReferences;
}
同時(shí)還引出了另一個(gè)問題,如果要從header中獲取這個(gè)參數(shù)颅眶,Authorization蜈出。不加注解,swagger也會(huì)自動(dòng)給添加一個(gè)參數(shù)涛酗。參數(shù)名正是Authorization铡原,不能用,但是不傳還提示必填商叹。