Browse Source

feat : swagger 설정 추가

pull/2/head
박재우 8 months ago
parent
commit
708534570a
  1. 97
      app/kac-app/src/main/java/kr/co/palnet/kac/app/config/SwaggerConfig.java
  2. 44
      app/kac-app/src/main/resources/application-swagger.yml

97
app/kac-app/src/main/java/kr/co/palnet/kac/app/config/SwaggerConfig.java

@ -0,0 +1,97 @@
package kr.co.palnet.kac.app.config;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import java.util.List;
@Slf4j
@Configuration
public class SwaggerConfig {
// @Bean
// public Docket api() {
// return new Docket(DocumentationType.OAS_30) // open api spec 3.0
// .apiInfo(new ApiInfoBuilder().version("1.0").title("PAV").build())
// .forCodeGeneration(true).securitySchemes(Arrays.asList(apiKey()))
// .select()
// .apis(RequestHandlerSelectors.any())
// .paths(PathSelectors.any())
// .build()
// .apiInfo(apiInfo())
// .directModelSubstitute(Date.class, String.class)
// .directModelSubstitute(LocalDate.class, String.class)
// .directModelSubstitute(LocalDateTime.class, String.class)
// .directModelSubstitute(Pageable.class, SwaggerPageable.class)
// .securityContexts(Arrays.asList(securityContext()))
// .securitySchemes(Arrays.asList(apiKey()));
// }
//
//
// private ApiInfo apiInfo() {
// return new ApiInfoBuilder()
// .title("PAV API")
// .description("----")
// .version("1.0")
// .build();
// }
//
// //ApiKey 정의
// private ApiKey apiKey() {
// return new ApiKey("Authorization", "Authorization", "header");
// }
//
// //JWT SecurityContext 구성
// private SecurityContext securityContext() {
// return SecurityContext.builder().securityReferences(defaultAuth()).build();
// }
//
// private List<SecurityReference> defaultAuth() {
// AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEveryThing");
// AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
// authorizationScopes[0] = authorizationScope;
// return Arrays.asList(new SecurityReference("Authorization", authorizationScopes));
// }
private static final String BEARER_TOKEN_PREFIX = "palnet";
@Bean
public OpenAPI openAPI() {
final String securitySchemeName = "BearerAuth";
SecurityRequirement securityRequirement = new SecurityRequirement().addList(securitySchemeName, List.of("read", "write"));
Components components = new Components()
.addSecuritySchemes(securitySchemeName, new SecurityScheme()
.type(SecurityScheme.Type.APIKEY)
.in(SecurityScheme.In.HEADER)
.name("Authorization")
.description("prefix add 'palnet ' + token")
);
// Swagger UI 접속 후, 딱 한 번만 accessToken을 입력해주면 모든 API에 토큰 인증 작업이 적용됩니다.
return new OpenAPI()
.addSecurityItem(securityRequirement)
.components(components)
.info(new Info()
.title("PAV API")
.version("1.0")
.description("PAV API")
);
}
}

44
app/kac-app/src/main/resources/application-swagger.yml

@ -0,0 +1,44 @@
springdoc:
api-docs:
path: /api-docs
groups:
enabled: true
# 해당 패턴에 매칭되는 controller만 swagger-ui에 노출한다.
# paths-to-match:
# - /api/**
# paths-to-exclude:
# - /api/v1/utm
# - /api/bas/flight/**
# - /api/ctr/cntrl/contains
# - /api/file/**
swagger-ui:
# 각 API의 그룹 표시 순서
# path, query, body, response 순으로 출력
path: /index.html
display-request-duration: true
groups-order: DESC
# 태그 정렬 순서.
# alpha: 알파벳 순 정렬
# method: OpenAPI specification file에 원하는 태그 정렬 방식 직접 기재
tags-sorter: alpha
# 컨트롤러 정렬 순서.
# method는 delete - get - patch - post - put 순으로 정렬된다.
# alpha를 사용해 알파벳 순으로 정렬할 수 있다.
operations-sorter: method
# Spring Actuator의 endpoint까지 보여줄 것인지?
show-actuator: false
# request media type 의 기본 값
default-consumes-media-type: application/json
# response media type 의 기본 값
default-produces-media-type: application/json
# Swagger UI에서 기본적으로 펼쳐져 보이는 경로의 수
doc-expansion : none
Loading…
Cancel
Save