
API를 개발할 때, 문서를 따로 작성하는 대신 자동으로 문서화하는 것이 효율적이다.
이때 SpringBoot에서 많이 쓰이는 도구 중에 하나인 Swagger와 SpringDoc에 대해 알아보자!
Maven Repository 에서 최신 버전 확인 후 build.gradle.kts에 추가
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.13")
@Configuration
@OpenAPIDefinition
public class SpringDoc {
}
스프링부트를 실행하면 자동으로 Swagger UI를 확인할 수 있다.
정상적으로 설정했다면 아래와 같은 Swagger 화면이 보일 것이다.


Swagger를 처음 실행하면 기본적인 정보만 표시되어 가독성이 떨어진다. 따라서 프로젝트에 맞게 문서를 구조화하고 이해하기 쉽게 만들기 위해서는 별도의 커스터마이징 과정이 필요하다.
이를 위해 Swagger의 다양한 어노테이션을 통해 간단한 커스터마이징도 직접 진행해보도록 하자!

해당 화면처럼 단계별로 커스터마이징을 해보자.
@OpenAPIDefinition(
info = @Info(
title = "API 서버",
version = "beta",
description = "API 서버 문서입니다."
)
)
@Bean
public GroupedOpenApi groupApiV1() {
return GroupedOpenApi.builder()
.group("apiV1")
.pathsToMatch("/api/v1/**")
.build();
}
@Bean
public GroupedOpenApi groupController() {
return GroupedOpenApi.builder()
.group("home")
.pathsToExclude("/api/**")
.build();
}

@Configuration
@OpenAPIDefinition(info = @Info(title = "API 서버", version = "beta", description = "API 서버 문서입니다."))
public class SpringDoc {
@Bean
public GroupedOpenApi groupApiV1() {
return GroupedOpenApi.builder()
.group("apiV1")
.pathsToMatch("/api/v1/**")
.build();
}
@Bean
public GroupedOpenApi groupController() {
return GroupedOpenApi.builder()
.group("home")
.pathsToExclude("/api/**")
.build();
}
}






Swagger UI를 처음 실행하면 각 요청의 Responses -> Media type이 json이 아닌 다른 형식으로 표시되어있다.
모든 API 문서의 기본 응답 타입을 json으로 고정하기 위해 application.yml 에 아래 설정을 추가하고 재실행해보자
springdoc:
default-produces-media-type: application/json

Responses의 Media type이 applcation/json으로 바뀐 것을 확인할 수 있다.