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ファイルの変更を検知する構造で再生成ループを減らすのに有利です。

© 2026 Byeolnaerim. 無断転載を禁じます。紹介プライバシーポリシー