Swagger UI

<aside> 💡 해당 글은 Swagger 2버전을 기준으로 설명합니다.

</aside>

API를 개발하면 명세를 관리해야 한다. 명세란 API가 어떤 로직을 수행하는지 설명하고 로직을 수행하기 위해 어떤 값을 요청하며, 응답값은 무엇을 받을 수 있는지를 정리한 자료이다.

API는 개발 과정에서 계속 변경되므로 관리하는 명세를 주기적으로 업데이트를 해주어야 한다. 이 작업은 번거롭고 오래걸리는데, 이 문제를 해결하기 위해 Swagger라는 오픈소스 프로젝트가 등장했다.

1. 의존성 추가

SpringBoot 기준으로 pom.xml에 다음과 같은 의존성을 추가해야 Swagger를 사용할 수 있다.

<!-- Swagger -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

2. 설정 코드 작성

@Configuration
**@EnableSwagger2**
public class SwaggerConfig {

    private final String API_NAME = "MyShop API";
    private final String API_VERSION = "1.0.0";
    private final String API_DESCRIPTION = "MYSHOP API 명세서";

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .ignoredParameterTypes(AuthenticationPrincipal.class, CurrentCustomer.class, CurrentProvider.class)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.myshop.api"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo(){
        return new ApiInfoBuilder()
                .title(API_NAME)
                .description(API_DESCRIPTION)
                .version(API_VERSION)
                .build();
    }
}

3. 어노테이션