API에 따른 요청/응답을 자동으로 문서화해주는 툴에 대해 알아보자 !
API 명세에 대한 문서 자동화 툴은 대표적으로 Spring REST Docs 와 Swagger 가 있다.
Spring Rest Docs 는 Spring 기반의 RESTful API를 문서화하기 위한 도구로, 테스트 기반의 접근 방식을 사용하여 API 문서를 생성한다.Swagger 는 API 개발 및 문서화를 위한 오픈 소스 프레임워크로, RESTful 웹 서비스를 설계, 빌드, 문서화하는 데 도움을 주는 툴이다.이 중 나는 Swagger 를 선택하여 API 문서를 자동화 하였다. Spring Rest Docs 말고 Swagger 를 선택한 이유는 다음과 같다.
※ Springboot 2.6.0 에서 진행
아래와 같이 swagger 의존성을 추가한다.
// Swagger
implementation 'org.springdoc:springdoc-openapi-ui:1.6.11'
springdoc:
swagger-ui:
path: /swagger-ui.html
groups-order: desc
operationsSorter: method
disable-swagger-default-url: true
display-request-duration: true
api-docs:
path: /api-docs
show-actuator: true
default-consumes-media-type: application/json
@Configuration
public class SwaggerConfig {
@Bean
public OpenAPI openAPI() {
Info info = new Info()
.version("v1.0.0")
.title("Muse API")
.description("Muse API 명세서입니다.");
return new OpenAPI().info(info);
}
}
※ title 과 description 은 자신의 프로젝트에 맞는 내용을 작성하면 된다.
Security 를 사용하지 않을 경우, 이 설정은 넘어가도 된다.
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers("/api-docs", "/swagger*/**");
}
위 3가지의 설정이 끝나면 Swagger 의 모든 설정은 끝났다.
@Tag : API 그룹의 이름@Tag(name = "채팅방 API")
public class ChatRoomController { ... }
@Operation : API 별 정보 설명@Operation(summary = "채팅방 생성")
@PostMapping("/room")
public MessageResponseDto createChatRoom() { ... }
애플리케이션을 실행하고 http://localhost:8080/swagger-ui/index.html 에 접속하면 된다.
