package kr.wisestone.owl.config; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; 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; /** * API 문서 제작 패키지 Swagger 설정 클래스 */ @Configuration @EnableSwagger2 public class SwaggerConfig { private static final String API_NAME = "OWL API"; private static final String API_VERSION = "1.0.0"; private static final String API_DESCRIPTION = "OWL API 명세서"; /** * API 설정 * @return docket class */ @Bean public Docket api() { // Parameter parameterBuilder = new ParameterBuilder() // .name(HttpHeaders.AUTHORIZATION) // .description("Access Tocken") // .modelRef(new ModelRef("string")) // .parameterType("header") // .required(false) // .build(); List globalParameters = new ArrayList<>(); // globalParameters.add(parameterBuilder); return new Docket(DocumentationType.SWAGGER_2) .globalOperationParameters(globalParameters) .consumes(getConsumeContentTypes()) .produces(getProduceContentTypes()) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("kr.wisestone.owl.web.controller.Api")) .paths(PathSelectors.any()) .build(); } /** * API 문서 타이틀/버전/설명 설정 * @return ApiInfo 클래스 */ public ApiInfo apiInfo() { return new ApiInfoBuilder() .title(API_NAME) .version(API_VERSION) .description(API_DESCRIPTION) .build(); } /** * API 문서 테스트 Request Content-Type 설정 추가 * @return consumes content-type 목록 */ private Set getConsumeContentTypes() { Set consumes = new HashSet<>(); consumes.add(""); return consumes; } /** * API 문서 테스트 Response content-type 설정 추가 * @return produce content-type 목록 */ private Set getProduceContentTypes() { Set produces = new HashSet<>(); produces.add("application/json;charset=UTF-8"); return produces; } }