Swagger / OpenAPI
RouterFunction과 handler source를 분석해 OpenAPI JSON을 변경 시에만 다시 씁니다.
Functional endpoint mode
ApiAccountRouter.java
java@Bean
public RouterFunction<ServerResponse> apiAccount(ApiAccountHandler handler) {
return route()
.nest(path("/api/account"), builder -> builder
.nest(path("/search"), search -> search
.GET("/get-detail/{accountName}", handler::getDetail)
.GET("/get-list", handler::getList)))
.build();
}nested path와 HTTP method, handler method reference를 합쳐 endpoint를 구성합니다. handler parser가 request body와 response publisher type을 추론합니다.
SwaggerJsonFileWatcher.Config
watchDirectory
기본 src/main/java
swaggerOutputFile
기본 src/main/resources/static/swagger.json
projectMode
기본 FUNCTIONAL_ENDPOINT, 선택 MVC
addDecompileJar / addDecompileJarClass
외부 jar type의 source 분석
addSourceClasspath
symbol resolution용 source/classpath
customTypeMapper
Class와 schema Map을 받아 custom schema를 적용
추론을 보정하는 annotation
java
@SelectedRequestParam(
key = "pageSize",
required = false,
nullable = true,
type = Integer.class
)
Integer pageSize = request.queryParam("pageSize").map(Integer::valueOf).orElse(null);
@SelectedResponseBody(type = MemberDetailResponse.class)
Mono<MemberDetailResponse> response = service.getDetail(accountName);변경된 경우에만 write
generation 결과가 기존 JSON과 같으면 파일 timestamp를 불필요하게 바꾸지 않습니다. 프론트 watcher가 swagger 파일 변경을 감지하는 구조에서 재생성 loop를 줄이는 데 유리합니다.