JeongJin's Blog

SpringBoot 2.7.x 에 Swagger 적용하기 본문

백엔드/Tool

SpringBoot 2.7.x 에 Swagger 적용하기

정진킴 2023. 10. 20. 19:27
  • API를 개발하려면 명세를 관리해야 합니다.
  • Swagger 설정 방법
    1. build.gradle 파일에 dependency를 추가한다.
implementation 'io.springfox:springfox-boot-starter:3.0.0'
implementation 'io.springfox:springfox-swagger-ui:3.0.0'

 

     2. 최상위 package에서 config 패키지 추가 후에 SwaggerConfig.java 에 해당 코드를 추가한다.

 

package com.zerobase.account.config;

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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.OAS_30)
                .useDefaultResponseMessages(true) // Swagger 에서 제공해주는 기본 응답 코드를 표시할 것이면 true
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.zerobase.account"))
                .paths(PathSelectors.any()) // 위 패키지 안의 api 중 지정된 path만 보여줌. (any()로 설정 시 모든 api가 보여짐)
                .build();
    }

    public ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Account Project Rest API Documentation")
                .description("Account 프로젝트 API")
                .version("0.1")
                .build();
    }
}

 

    3. application.properties 에 해당 코드 추가한다.

spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER # 이클립스
spring.mvc.pathmatch.matching-strategy=ant_path_matcher # 인텔리제이

 

    4. 기동 후 아래의 주소로 접속하면 swagger 가 뜬다.

        http://localhost:8080/swagger-ui/index.html#/hello-controller/helloUsingGET

 

 

※ basic-error-controller 영역 제거 방법

  • 다양한 방법들이 있지만 RequestHandlerSelectors.basePackage 설정이 제일 무난하다고 생각한다.
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.OAS_30)
				...
                // base-error-controller 영역 노출
                .apis(RequestHandlerSelectors.any())
                
                // base-error-controller 영역 미노출
                .apis(RequestHandlerSelectors.basePackage("com.zerobase.account"))
				
                ...                
                .build();
    }

 

* 그 외 기능들은 찾아보고 추가 시 업데이트를 하도록 하겠습니다