4.6.2.3. Eclipse Vert.x HTTP クライアントの改善

本セクションでは、HTTP クライアントの改善を説明します。

4.6.2.3.1. HTTP クライアント要求と応答メソッドが非同期ハンドラーを入力引数として取ります。

HttpClient メソッドおよび HttpClientRequest メソッドが更新され、非同期ハンドラーが使用されるようになりました。このメソッドは、Handler<HttpClientResponse> の代わりに Handler<AsyncResult<HttpClientResponse>& gt; を入力として取ります

以前のリリースの Eclipse Vert.x では、リクエストを実行するためにさらに送信する必要がある HttpClient Request を返すのに HttpClient メソッド get Now()、optionsNow()、および headNow() が使用されていました。Get Now()メソッドoptionsNow()メソッド、および headNow() メソッドが削除されました。Eclipse Vert.x 4 では、Handler<AsyncResult<HttpClientResponse>> を使用して、必要な情報で要求を直接送信できます。

以下の例は、Eclipse Vert.x 3.x で要求を送信する方法を示しています。

  • GET 操作を実行するには、以下を実行します。

    Future<HttpClientResponse> f1 = client.get(8080, "localhost", "/uri", HttpHeaders.set("foo", "bar"));
  • バッファーボディーを持つ POST を行うには、以下を行います。

    Future<HttpClientResponse> f2 = client.post(8080, "localhost", "/uri", HttpHeaders.set("foo", "bar"), Buffer.buffer("some-data"));
  • ストリーミングボディーを使用した POST を行うには、以下を行います。

    Future<HttpClientResponse> f3 = client.post(8080, "localhost", "/uri", HttpHeaders.set("foo", "bar"), asyncFile);

Eclipse Vert.x 4 では、requests メソッドを使用して HttpClientRequest インスタンスを作成できます。これらのメソッドは、以下のような基本的な対話で使用できます。

  • リクエストヘッダーの送信
  • プッシュハンドラー、ストリームの優先度、ping の設定などの HTTP/2 固有の操作。
  • NetSocket トンネルの作成
  • 粒度の細かい書き込み制御を提供
  • ストリームのリセット
  • 100 継続ヘッダーの手動処理

以下の例は、Eclipse Vert.x 4 で HTTPClientRequest を作成する方法を示しています。

client.request(HttpMethod.GET, 8080, "example.com", "/resource", ar -> {
  if (ar.succeeded()) {
    HttpClientRequest request = ar.result();
    request.putHeader("content-type", "application/json")
    request.send(new JsonObject().put("hello", "world"))
      .onSuccess(response -> {
      //
      }).onFailure(err -> {
      //
       });
     }
})