Swagger / OpenAPI
RouterFunctionとハンドラソースを分析し、OpenAPI JSONを変更時にのみ再生成します。
機能的エンドポイントモード
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();
}ネストされたパスとHTTPメソッド、ハンドラーメソッドリファレンスを組み合わせてエンドポイントを構成します。ハンドラーパーサーがリクエストボディとレスポンスパブリッシャータイプを推測します。
SwaggerJsonFileWatcher.Config
watchDirectory
基本 src/main/java
swaggerOutputFile
デフォルトの src/main/resources/static/swagger.json
projectMode
デフォルト FUNCTIONAL_ENDPOINT、選択 MVC
addDecompileJar / addDecompileJarClass
外部jarタイプのソース分析
addSourceClasspath
シンボル解決用のソース/クラスパス
customTypeMapper
クラスとスキーママップを受け取り、カスタムスキーマを適用します
推論を補正するアノテーション
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);変更された場合のみ書き込み
生成結果が既存のJSONと同じ場合、ファイルのタイムスタンプを不必要に変更しません。フロントのウォッチャーがswaggerファイルの変更を検知する構造で再生成ループを減らすのに有利です。