88 lines
3.1 KiB
Java
88 lines
3.1 KiB
Java
package com.cnbm.config;
|
||
|
||
import com.cnbm.common.constant.Constant;
|
||
import com.google.common.collect.Lists;
|
||
import io.swagger.annotations.ApiOperation;
|
||
import org.springframework.context.annotation.Bean;
|
||
import org.springframework.context.annotation.Configuration;
|
||
import org.springframework.context.annotation.Profile;
|
||
import springfox.documentation.builders.ApiInfoBuilder;
|
||
import springfox.documentation.builders.PathSelectors;
|
||
import springfox.documentation.builders.RequestHandlerSelectors;
|
||
import springfox.documentation.oas.annotations.EnableOpenApi;
|
||
import springfox.documentation.service.*;
|
||
import springfox.documentation.spi.DocumentationType;
|
||
import springfox.documentation.spi.service.contexts.SecurityContext;
|
||
import springfox.documentation.spring.web.plugins.Docket;
|
||
|
||
import java.util.Arrays;
|
||
import java.util.List;
|
||
|
||
import static com.google.common.collect.Lists.newArrayList;
|
||
|
||
/**
|
||
* @Author weihongyang
|
||
* @Date 2022/6/21 10:56 AM
|
||
* @Version 1.0
|
||
*/
|
||
@Configuration
|
||
@EnableOpenApi
|
||
@Profile("dev")
|
||
public class SwaggerConfig {
|
||
|
||
/**
|
||
* 创建API应用
|
||
* apiInfo() 增加API相关信息
|
||
* 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
|
||
* 本例采用指定扫描的包路径来定义指定要建立API的目录。
|
||
*
|
||
* @return
|
||
*/
|
||
@Bean
|
||
public Docket restApi() {
|
||
return new Docket(DocumentationType.SWAGGER_2)
|
||
.groupName("标准接口")
|
||
.apiInfo(apiInfo("Spring Boot中使用Swagger2构建RESTful APIs", "1.0"))
|
||
.useDefaultResponseMessages(true)
|
||
.forCodeGeneration(false)
|
||
.select()
|
||
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
|
||
.paths(PathSelectors.any())
|
||
.build()
|
||
.securityContexts(Arrays.asList(securityContext()))
|
||
// ApiKey的name需与SecurityReference的reference保持一致
|
||
.securitySchemes(Arrays.asList(new ApiKey("token", "token", "header")));
|
||
}
|
||
|
||
/**
|
||
* 创建该API的基本信息(这些基本信息会展现在文档页面中)
|
||
* 访问地址:http://ip:port/swagger-ui.html
|
||
*
|
||
* @return
|
||
*/
|
||
private ApiInfo apiInfo(String title, String version) {
|
||
return new ApiInfoBuilder()
|
||
.title(title)
|
||
.description("ym-pass文档")
|
||
.termsOfServiceUrl("https://www.baidu.com/")
|
||
.version(version)
|
||
.build();
|
||
}
|
||
|
||
private SecurityContext securityContext() {
|
||
return SecurityContext.builder()
|
||
.securityReferences(defaultAuth())
|
||
.build();
|
||
}
|
||
|
||
List<SecurityReference> defaultAuth() {
|
||
AuthorizationScope authorizationScope
|
||
= new AuthorizationScope("global", "accessEverything");
|
||
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
|
||
authorizationScopes[0] = authorizationScope;
|
||
return Lists.newArrayList(
|
||
new SecurityReference(Constant.TOKEN_HEADER, authorizationScopes));
|
||
}
|
||
|
||
}
|