SpringBoot +Swagger 적용

gahyun·2022년 12월 22일
3
post-thumbnail

1. Swagger란?

Swagger 는 OAS(Open Api Specification) 입니다.
개발자들의 필수 과제인 API 문서화를 쉽게 할 수 있도록 도와주는 명세서입니다. 기존 Talend,postman등에서 테스트 하던 것을 controller별로 구분해서 사용할 수 있습니다.

2. 적용

⚡ Swagger 의존성 추가

//swagger
    implementation "io.springfox:springfox-boot-starter:3.0.0"
    implementation "io.springfox:springfox-swagger-ui:3.0.0"

📑 yml파일 수정

spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

🌏 Swagger 접속

🔐 Authorize 버튼 추가

spring-security 추가 시 swagger 로그인 창 뜨는거 해결

  • configuration 파일 추가

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.service.ApiKey;
    import springfox.documentation.service.AuthorizationScope;
    import springfox.documentation.service.SecurityReference;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spi.service.contexts.SecurityContext;
    import springfox.documentation.spring.web.plugins.Docket;
    import java.util.Arrays;
    import java.util.List;
    @Configuration
    public class SwaggerConfig {
       @Bean
       public Docket api() {
           return new Docket(DocumentationType.OAS_30)
                   .securityContexts(Arrays.asList(securityContext()))
                   .securitySchemes(Arrays.asList(apiKey()))
                   .select()
                   .apis(RequestHandlerSelectors.any())
                   .paths(PathSelectors.any())
                   .build();
       }
    
       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 ApiKey apiKey() {
           return new ApiKey("Authorization", "Authorization", "header");
       }
    }
    

0개의 댓글