package com.xzx.gc.config;
|
|
import com.google.common.collect.Lists;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Profile;
|
import org.springframework.http.HttpHeaders;
|
import springfox.documentation.builders.ApiInfoBuilder;
|
import springfox.documentation.builders.ParameterBuilder;
|
import springfox.documentation.builders.PathSelectors;
|
import springfox.documentation.builders.RequestHandlerSelectors;
|
import springfox.documentation.schema.ModelRef;
|
import springfox.documentation.service.*;
|
import springfox.documentation.spi.DocumentationType;
|
import springfox.documentation.spi.service.contexts.SecurityContext;
|
import springfox.documentation.spring.web.plugins.Docket;
|
import springfox.documentation.swagger.web.ApiKeyVehicle;
|
import springfox.documentation.swagger.web.SecurityConfiguration;
|
import springfox.documentation.swagger2.annotations.EnableSwagger2;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* @author: zhongzan
|
* @create: 2019-06-19 17:06
|
* @description:
|
*/
|
@Configuration
|
@EnableSwagger2
|
@Profile(value = {"dev","test","check", "xctest"})
|
public class SwaggerConfig {
|
|
|
@Value("${info.app.name}")
|
private String appName;
|
|
|
@Bean
|
public Docket createRestApi() {
|
|
List<Parameter> aParameters=getParas();
|
|
Docket docket = new Docket(DocumentationType.SWAGGER_2)
|
.groupName(appName)
|
.apiInfo(apiInfo(appName))
|
//不使用swagger默认状态码
|
.useDefaultResponseMessages(false)
|
//设置自定义异常
|
// .globalResponseMessage(RequestMethod.POST,responseMessageList)
|
.select()
|
.apis(RequestHandlerSelectors.basePackage("com.xzx.gc"))
|
//指定需要生成的文档的接口的路径
|
// .paths(PathSelectors.regex("/(third|upgradeRecord|user|accountInfo|income|withdrawal).*"))
|
.paths(PathSelectors.any())
|
.build().globalOperationParameters(aParameters);
|
//设置token验证
|
docket.securitySchemes(Lists.newArrayList(apiKey()));
|
//指定路径需要验证
|
docket.securityContexts(Lists.newArrayList(securityContext()));
|
//全局忽略参数类型
|
docket.ignoredParameterTypes(HttpServletRequest.class, HttpServletResponse.class);
|
return docket;
|
}
|
|
|
/**
|
* 设置公共参数
|
* @return
|
*/
|
private List<Parameter> getParas(){
|
List<Parameter> aParameters = new ArrayList<Parameter>();
|
ParameterBuilder aParameterBuilder = new ParameterBuilder();
|
aParameterBuilder.name("swagger").description("系统参数:swagger模式不拦截").defaultValue("true").modelRef(new ModelRef("String")).parameterType("header").required(true).build();
|
aParameters.add(aParameterBuilder.build());
|
|
aParameterBuilder = new ParameterBuilder();
|
aParameterBuilder.name("version").description("系统参数:版本号").defaultValue("v2.1").modelRef(new ModelRef("String")).parameterType("header").required(true).build();
|
aParameters.add(aParameterBuilder.build());
|
|
aParameterBuilder = new ParameterBuilder();
|
aParameterBuilder.name("userId").description("系统参数:用户ID").defaultValue("USER1255012451226095616").modelRef(new ModelRef("String")).parameterType("header").required(true).build();
|
aParameters.add(aParameterBuilder.build());
|
|
return aParameters;
|
}
|
|
private SecurityContext securityContext() {
|
return SecurityContext.builder()
|
.securityReferences(defaultAuth())
|
//指定需要Token验证的文档的接口的路径
|
.forPaths(PathSelectors.any())
|
.build();
|
}
|
|
List<SecurityReference> defaultAuth() {
|
AuthorizationScope authorizationScope
|
= new AuthorizationScope("global", "accessEverything");
|
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
|
authorizationScopes[0] = authorizationScope;
|
return Lists.newArrayList(
|
new SecurityReference(HttpHeaders.AUTHORIZATION, authorizationScopes));
|
}
|
|
@Bean
|
SecurityConfiguration security() {
|
return new SecurityConfiguration(
|
null,
|
null,
|
null, // realm Needed for authenticate button to work
|
null, // appName Needed for authenticate button to work
|
"BEARER ",// apiKeyValue
|
ApiKeyVehicle.HEADER,
|
HttpHeaders.AUTHORIZATION, //apiKeyName
|
null);
|
}
|
|
private ApiInfo apiInfo(String desc) {
|
return new ApiInfoBuilder()
|
.title("小棕熊")
|
.description(desc)
|
.termsOfServiceUrl("")
|
.contact(new Contact("钟赞","","zan7755@qq.com"))
|
.version("1.0")
|
.build();
|
}
|
|
|
private ApiKey apiKey() {
|
return new ApiKey(HttpHeaders.AUTHORIZATION, "token", "header");
|
}
|
|
}
|