// spring doc
// implementation 'org.springdoc:springdoc-openapi-ui:1.6.14'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'
SpringBoot version 3.XX에서 위에 주석 처리한 설정을 사용하면, Whitelabel Error Page 가 나온다.
https://stackoverflow.com/questions/75574324/spring-boot-version-3-0-0-springdoc-openapi-ui-dont-work
아래의 링크를 가보면, SpringBoot version 2.XX에서 사용하는 Springdoc을 implementation한 것을 알 수 있다.
SpringBoot 3.XX에서의 올바른 gradle import는 org.springdoc:springdoc-openapi-starter-webmvc-ui를 사용해야 한다.
springdoc:
api-docs:
enabled: true
swagger-ui:
path: /swagger-ui/index.html
groups-order: DESC
doc-expansion: none
tags-sorter: alpha
operationsSorter: method
disable-swagger-default-url: true
display-request-duration: true
@Configuration
public class SwaggerConfig {
@Bean
public OpenAPI getOpenApi() {
return newOpenAPI().components(newComponents())
.info(getInfo());
}
private Info getInfo() {
return new Info()
.version("1.0.0")
.description("COMMERCE REST API DOC")
.title("COMMERCE");
}
}
위와 같이 OpenApi를 빈으로 등록해주는 것으로 Swagger파일이 만들어진다.
@Configuration
public class SwaggerConfig {
@Bean
public GroupedOpenApi getItemApi() {
return GroupedOpenApi
.builder()
.group("item")
.pathsToMatch("/api/item/**")
.build();
}
@Bean
public GroupedOpenApi getMemberApi() {
return GroupedOpenApi
.builder()
.group("member")
.pathsToMatch("/api/member/**")
.build();
}
@Bean
public OpenAPI getOpenApi() {
return new OpenAPI().components(new Components())
.info(getInfo());
}
private Info getInfo() {
return new Info()
.version("1.0.0")
.description("COMMERCE REST API DOC")
.title("COMMERCE");
}
}
Springdoc의 경우 위와 같이 GroupedOpenApi를 만들 수 있는데, 기본 SwaggerConfig만 설정했을 때와 달리, GroupedOpenApi를 설정하면, select a definition을 통해 API들을 구룹별로 제공한다.
애플리케이션이 충분히 크다면, Springdoc의 GroupedOpenApi를 통해 API를 분류하여 API spec을 문서화할 수 있다는 장점이 있다.