| 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", "xc"}) | 
| 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"); | 
|     } | 
|   | 
| } |