package com.its.op.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpHeaders; import springfox.documentation.RequestHandler; 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.ApiInfo; import springfox.documentation.service.Parameter; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; import java.util.ArrayList; import java.util.List; import java.util.function.Predicate; //@Profile("dev|swagger") @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket commonApi() { Parameter parameterBuilder = new ParameterBuilder() .name(HttpHeaders.AUTHORIZATION) .description("Access Token") .modelRef(new ModelRef("string")) .parameterType("header") .required(false) .build(); List globalParameters = new ArrayList<>(); globalParameters.add(parameterBuilder); Predicate predicate = RequestHandlerSelectors.basePackage("com.its.op.controller") .or(RequestHandlerSelectors.basePackage("com.its.op.dto.validate")); // List> predicateList = new ArrayList<>(); // predicateList.add(RequestHandlerSelectors.basePackage("com.its.op.controller")); // predicateList.add(RequestHandlerSelectors.basePackage("com.its.op.dto.validate")); return new Docket(DocumentationType.SWAGGER_2) .globalOperationParameters(globalParameters) .groupName("its-api") .apiInfo(this.apiInfo()) .select() //.apis(RequestHandlerSelectors.basePackage("com.its.op.controller")) .apis(predicate::test) .paths(PathSelectors.any()) //.paths(PathSelectors.ant("/api/**")) .build(); /* Response를 보면 Swagger에서는 200, 401, 403, 404 같은 기본상태코드에 대한 디폴트메세지를 제공해준다. 이 기본상태코드들을 제거하려면 Swagger JAVA 설정코드쪽에 .securitySchemes(Collections.singletonList(apiKey())) 이부분을 .securitySchemes(Collections.singletonList(apiKey())).useDefaultResponseMessages(false) */ } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("ITS Operating API") .description("Intelligent Traffic Operating System API") .version("0.0.1") .build(); } }