박재우
8 months ago
2 changed files with 141 additions and 0 deletions
@ -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") |
||||||
|
); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
@ -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…
Reference in new issue