SwaggerConfig.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package com.its.op.config;
  2. import org.springframework.context.annotation.Bean;
  3. import org.springframework.context.annotation.Configuration;
  4. import org.springframework.http.HttpHeaders;
  5. import springfox.documentation.RequestHandler;
  6. import springfox.documentation.builders.ApiInfoBuilder;
  7. import springfox.documentation.builders.ParameterBuilder;
  8. import springfox.documentation.builders.PathSelectors;
  9. import springfox.documentation.builders.RequestHandlerSelectors;
  10. import springfox.documentation.schema.ModelRef;
  11. import springfox.documentation.service.ApiInfo;
  12. import springfox.documentation.service.Parameter;
  13. import springfox.documentation.spi.DocumentationType;
  14. import springfox.documentation.spring.web.plugins.Docket;
  15. import springfox.documentation.swagger2.annotations.EnableSwagger2;
  16. import java.util.ArrayList;
  17. import java.util.List;
  18. import java.util.function.Predicate;
  19. //@Profile("dev|swagger")
  20. @Configuration
  21. @EnableSwagger2
  22. public class SwaggerConfig {
  23. @Bean
  24. public Docket commonApi() {
  25. Parameter parameterBuilder = new ParameterBuilder()
  26. .name(HttpHeaders.AUTHORIZATION)
  27. .description("Access Token")
  28. .modelRef(new ModelRef("string"))
  29. .parameterType("header")
  30. .required(false)
  31. .build();
  32. List<Parameter> globalParameters = new ArrayList<>();
  33. globalParameters.add(parameterBuilder);
  34. Predicate<RequestHandler> predicate = RequestHandlerSelectors.basePackage("com.its.op.controller")
  35. .or(RequestHandlerSelectors.basePackage("com.its.op.dto.validate"));
  36. // List<Predicate<RequestHandler>> predicateList = new ArrayList<>();
  37. // predicateList.add(RequestHandlerSelectors.basePackage("com.its.op.controller"));
  38. // predicateList.add(RequestHandlerSelectors.basePackage("com.its.op.dto.validate"));
  39. return new Docket(DocumentationType.SWAGGER_2)
  40. .globalOperationParameters(globalParameters)
  41. .groupName("its-api")
  42. .apiInfo(this.apiInfo())
  43. .select()
  44. //.apis(RequestHandlerSelectors.basePackage("com.its.op.controller"))
  45. .apis(predicate::test)
  46. .paths(PathSelectors.any())
  47. //.paths(PathSelectors.ant("/api/**"))
  48. .build();
  49. /*
  50. Response를 보면 Swagger에서는 200, 401, 403, 404 같은 기본상태코드에 대한 디폴트메세지를 제공해준다.
  51. 이 기본상태코드들을 제거하려면 Swagger JAVA 설정코드쪽에
  52. .securitySchemes(Collections.singletonList(apiKey())) 이부분을
  53. .securitySchemes(Collections.singletonList(apiKey())).useDefaultResponseMessages(false)
  54. */
  55. }
  56. private ApiInfo apiInfo() {
  57. return new ApiInfoBuilder()
  58. .title("ITS Operating API")
  59. .description("Intelligent Traffic Operating System API")
  60. .version("0.0.1")
  61. .build();
  62. }
  63. }