안녕하세요. 오랜만에 인사드립니다.

 

개인적으로 많은 일들이 있던 2023년이라서 너무나도 오랫동안 블로그를 못쓰고 있었네요. 자세한 이야기는 따로 썰을 풀어서 글을 써볼까 합니다 ㅎㅎ

 

일단 이 글의 목적은 개발을 진행하면서 API 문서로 swagger를 많이 사용하고 있는데, Spring 3버전 이상부터는 기존에 사용하던 springfox 가 아닌 springdoc-openapi-ui 라이브러리를 사용해야 한다는 내용을 소개하려고 합니다!

 

"swagger 사용법" 이라고 검색하게 되면 대부분이 springfox를 이용한 swagger 사용법들이 나오고 있어 저도 그렇게 사용하는줄 알았는데, 이제는 springdoc을 사용하여 swagger를 써야한다는 걸 알게되었는데요.

 

이유는 springfox는 2020년 7월 14일에 3.0.0 버전을 마지막으로 더이상 업데이트가 되지 않는다는 것을 알 수 있습니다.

(참고: https://github.com/springfox/springfox)

 

그에 비해 springdoc-openapi 의 경우 제가 작성하는 날짜를 기준(23년12월27일)으로 3주전까지 업데이트가 되고 있습니다.

(참고: https://github.com/springdoc/springdoc-openapi)

그러기에 Spring 버전이 올라가더라도 적용이 가능한 springdoc-openapi 사용이 필수적이라고 보여집니다.

 

간단한 사용법을 설명드리자면 먼저 해당 라이브러리를 적용해야합니다.

 

Gradle / Maven 에 dependency 를 추가하시면 됩니다.

공식 springdoc Github 에서 공식 문서로 제공해주고 있는데

 

- Gradle

## implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0'

 

- Maven

<dependency>

     <groupId>org.springdoc</groupId>

     <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>

     <version>2.3.0</version>

</dependency>

 

으로 추가하여 사용하실 수 있습니다.

 

그리고 SwaggerConfig.java 라는 파일을 생성하여 설정 할 수도 있습니다.

 

import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SwaggerConfig {
    @Bean
    public OpenAPI openAPI(){
        Info info = new Info()
                .title("Spring Boot 를 이용한 API 확인 Swagger")
                .version("0.1")
                .description("API 문서입니다. \n Demo 버전으로 들고다니는 용도입니다.");
        return new OpenAPI()
                .components(new Components())
                .info(info);
    }
}

 

위와 같은 형식으로 파일을 생성하여 사용하시면 

url에 http://localhost:사용자port/swagger-ui/index.html 를 입력하여 들어가면 

 

 

이런 화면이 나타나며 swagger를 사용하실 수 있습니다.

 

2버전과는 조금 달라진 ui가 있지만 크게 차이가 없기 때문에 사용하시는데 어려움은 없으실테고,

Spring 3 버전 이후 부터는 springfox가 아닌 springdoc-openapi 라이브러리를 사용하시는걸 잊지 마시고 헷갈리지 않으셨으면 합니다.

 

감사합니다 :)

+ Recent posts