上次配置swagger已經(jīng)是很久以前的事了蔗崎,這兩天要用到結(jié)果發(fā)現(xiàn)忘得一干二凈。扰藕。缓苛。
記錄一下配置過程。
swagger3邓深,跟swagger2還是有點(diǎn)兒區(qū)別的未桥。
1、依賴
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
</dependency>
2芥备、配置類
@Configuration
public class SwaggerConfig
{
/**
* 創(chuàng)建API
*/
@Bean
public Docket createRestApi()
{
return new Docket(DocumentationType.OAS_30)
// 是否啟用Swagger
.enable(true)
// 用來創(chuàng)建該API的基本信息冬耿,展示在文檔的頁面中(自定義展示的信息)
.apiInfo(apiInfo())
// 設(shè)置哪些接口暴露給Swagger展示
.select()
// 掃描所有有注解的api,用這種方式更靈活
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
// 掃描指定包中的swagger注解
// .apis(RequestHandlerSelectors.basePackage("com.learn.project.tool.swagger"))
// 掃描所有 .apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
/* 設(shè)置安全模式萌壳,swagger可以設(shè)置訪問token */
.securitySchemes(securitySchemes())
.securityContexts(securityContexts())
.pathMapping("/api");
}
/**
* 安全模式亦镶,這里指定token通過Authorization頭請求頭傳遞
*/
private List<SecurityScheme> securitySchemes()
{
List<SecurityScheme> apiKeyList = new ArrayList<SecurityScheme>();
apiKeyList.add(new ApiKey("Authorization", "Authorization", In.HEADER.toValue()));
return apiKeyList;
}
/**
* 安全上下文
*/
private List<SecurityContext> securityContexts()
{
List<SecurityContext> securityContexts = new ArrayList<>();
securityContexts.add(
SecurityContext.builder()
.securityReferences(defaultAuth())
.operationSelector(o -> o.requestMappingPattern().matches("/.*"))
.build());
return securityContexts;
}
/**
* 默認(rèn)的安全上引用
*/
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;
}
/**
* 添加摘要信息
*/
private ApiInfo apiInfo()
{
// 用ApiInfoBuilder進(jìn)行定制
return new ApiInfoBuilder()
// 設(shè)置標(biāo)題
.title("接口文檔")
// 描述
.description("swagger3 接口文檔")
// 作者信息
.contact(new Contact("haopc", null, null))
// 版本
.version("1.0.0")
.build();
}
}
3、訪問:
http://IP:PORT/swagger-ui/index.html
微信圖片_20221227155829.png