Swagger / OpenAPI
Reescreve o JSON do OpenAPI apenas quando há alterações na source da RouterFunction e do handler.
Modo de endpoint funcional
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();
}Combina o caminho aninhado, o método HTTP e a referência do método do manipulador para compor o endpoint. O parser do manipulador infere o tipo do corpo da requisição e do publicador de resposta.
SwaggerJsonFileWatcher.Config
diretórioDeObservação
padrão src/main/java
swaggerOutputFile
Padrão src/main/resources/static/swagger.json
projectMode
Padrão FUNCTIONAL_ENDPOINT, opção MVC
addDecompileJar / addDecompileJarClass
análise de fonte do tipo jar externo
addSourceClasspath
source/classpath para resolução de símbolos
customTypeMapper
Recebe a classe e o mapa de esquema para aplicar um esquema personalizado.
Anotação para correção de inferência
@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);Escrever apenas se houver alteração
Se o resultado da geração for igual ao JSON existente, não altere o timestamp do arquivo desnecessariamente. Isso ajuda a reduzir loops de regeneração na estrutura onde o watcher do front-end detecta alterações no arquivo swagger.