4.15. Eclipse Vert.x OpenAPI の変更点


Eclipse Vert.x 4 では、新しいモジュール vertx-web-openapi が利用できるようになりました。このモジュールは、vertx-web と併用して、コントラクト駆動型アプリケーションを開発します。

新しいモジュールは、Eclipse Vert.x Web Router と適切に機能します。新しいモジュールには以下の Eclipse Vert.x 依存関係が必要です。

  • vertx-json-schema
  • vertx-web-validation

新しいモジュールは、io.vertx.ext.web.openapi パッケージで利用できます。

Eclipse Vert.x 4 では、新しいモジュールへの移行を容易にするために、古い OpenAPI モジュール vertx-web-api-contract がサポートされます。新しい機能を活用するには、新しいモジュール vertx-web-openapi を使用することが推奨されます。

4.15.1. 新規モジュールはルータービルダーを使用

vertx-web-openapi モジュールは、RouterBuilder を使用して Eclipse Vert.x Web ルーターをビルドします。このルータービルダーは、vertx-web-api-contract モジュールのルータービルダー OpenAPI3RouterFactory と似ています。

vertx-web-openapi モジュールの使用を開始するには、RouterBuilder をインスタンス化します。

RouterBuilder.create(vertx, "petstore.yaml").onComplete(ar -> {
  if (ar.succeeded()) {
    // Spec loaded with success
    RouterBuilder routerBuilder = ar.result();
  } else {
    // Something went wrong during router builder initialization
    Throwable exception = ar.cause();
  }
});

future を使用して RouterBuilder をインスタンス化することもできます。

RouterBuilder.create(vertx, "petstore.yaml")
  .onSuccess(routerBuilder -> {
    // Spec loaded with success
  })
  .onFailure(exception -> {
    // Something went wrong during router builder initialization
  });
注記

vertx-web-openapi モジュールは、Eclipse Vert.x ファイルシステム API を使用してファイルを読み込みます。そのため、クラスパスリソースに / を指定する必要はありません。たとえば、アプリケーションに petstore.yaml を指定することができます。RouterBuilder は、クラスパスリソースからコントラクトを特定できます。

4.15.2. 新たなルータービルダーメソッド

ほとんどの場合、古い OpenAPI3RouterFactory メソッドを検索して、新しい RouterBuilder メソッドに置き換えることができます。以下の表は、旧式のメソッドと新しいメソッドの例をいくつか紹介します。

Expand
古い OpenAPI3RouterFactory メソッド新しい RouterBuilder メソッド

routerFactory.addHandlerByOperationId("getPets", handler)

routerBuilder.operation("getPets").handler(handler)

routerFactory.addFailureHandlerByOperationId("getPets", handler)

routerBuilder.operation("getPets").failureHandler(handler)

routerFactory.mountOperationToEventBus("getPets", "getpets.myapplication")

routerBuilder.operation("getPets").routeToEventBus("getpets.myapplication")

routerFactory.addGlobalHandler(handler)

routerBuilder.rootHandler(handler)

routerFactory.addBodyHandler(handler)

routerBuilder.bodyHandler(handler)

routerFactory.getRouter()

routerBuilder.createRouter()

以下の構文を使用して、解析された要求パラメーターにアクセスします。

RequestParameters parameters = routingContext.get(io.vertx.ext.web.validation.ValidationHandler.REQUEST_CONTEXT_KEY);
int aParam = parameters.queryParameter("aParam").getInteger();

4.15.3. セキュリティーの処理

Eclipse Vert.x 4 では、RouterFactory.addSecurityHandler() メソッドおよび OpenAPI3RouterFactory.addSecuritySchemaScopeValidator() メソッドは利用できなくなりました。

代わりに RouterBuilder.securityHandler() メソッドを使用します。このメソッドは、io.vertx.ext.web.handler.AuthenticationHandler をハンドラーとして受け入れます。このメソッドは OAuth2Handler を自動的に認識し、セキュリティースキーマを設定します。

新しいセキュリティーハンドラーは、OpenAPI 仕様 で定義された操作も実装します。

4.15.4. 一般的な障害の処理

vertx-web-openapi モジュールでは、以下の失敗ハンドラーは利用できません。Router.errorHandler(int, Handler) メソッドを使用して失敗ハンドラーを設定する必要があります。

Expand
`vertx-web-api-contract` モジュールの旧メソッドvertx-web-openapi モジュールの新しいメソッド

routerFactory.setValidationFailureHandler(handler)

router.errorHandler(400, handler)

routerBuilder.setNotImplementedFailureHandler(handler)

router.errorHandler(501, handler)

4.15.5. OpenAPI 契約モデルへのアクセス

Eclipse Vert.x 4 では、OpenAPI コントラクトは POJO (Plain Old Java Object ) にマッピングされません。そのため、追加の swagger-parser 依存関係は不要になりました。ゲッターおよびリゾルバーを使用して、コントラクトの特定のコンポーネントを取得できます。

以下の例は、1 つの操作を使用して特定のコンポーネントを取得する方法を示しています。

JsonObject model = routerBuilder.operation("getPets").getOperationModel();

以下の例は、完全なコントラクトを取得する方法を示しています。

JsonObject contract = routerBuilder.getOpenAPI().getOpenAPI();

以下の例は、コントラクトの一部を解決する方法を示しています。

JsonObject petModel = routerBuilder.getOpenAPI().getCached(JsonPointer.from("/components/schemas/Pet"));

4.15.6. OpenAPI を使用しない Web 要求の検証

vertx-web-api-contract モジュールでは、HTTPRequestValidationHandler を使用して HTTP リクエストを検証できます。検証に OpenAPI を使用する必要はありません。

Eclipse Vert.x 4 では、HTTP 要求を検証するため vertx-web-validation モジュールを使用します。このモジュールをインポートし、OpenAPI を使用せずにリクエストを検証できます。ValidationHandler を使用して要求を検証します。

4.15.7. Eclipse Vert.x Web API サービスの更新

vertx-web-api-service モジュールが更新され、vertx-web-validation モジュールとともに使用できるようになりました。vertx-web-openapi モジュールを使用している場合、Web サービス機能は変更されません。

ただし、OpenAPI を使用しない場合は、vertx-web-validation モジュールで Web サービスモジュールを使用するには、RouteToEBServiceHandler クラスを使用する必要があります。

router.get("/api/transactions")
  .handler(
    ValidationHandlerBuilder.create(schemaParser)
      .queryParameter(optionalParam("from", stringSchema()))
      .queryParameter(optionalParam("to", stringSchema()))
      .build()
  ).handler(
    RouteToEBServiceHandler.build(eventBus, "transactions.myapplication", "getTransactionsList")
  );

vertx-web-api-service モジュールは vertx-web-api-contract をサポートしません。そのため、Eclipse Vert.x 4 にアップグレードする場合は、Eclipse Vert.x OpenAPI アプリケーションを vertx-web-openapi モジュールに移行する必要があります。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る