4.6.2.3. Eclipse Vert.x HTTP クライアントの改善
本セクションでは、HTTP クライアントの改善を説明します。
4.6.2.3.1. HTTP クライアント要求と応答メソッドが非同期ハンドラーを入力引数として取る
HttpClient
メソッドおよび HttpClientRequest
メソッドが更新され、非同期ハンドラーが使用されるようになりました。このメソッドは、Handler<HttpClientResponse>
の代わりに、Handler<AsyncResult<HttpClientResponse>>
を入力として取ります。
以前のリリースの Eclipse Vert.x では、リクエストを実行するためにさらに送信する必要がある HttpClientRequest
を返すのに HttpClient
メソッドの getNow()
、optionsNow()
、および headNow()
が使用されていました。getNow()
メソッド、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 -> { // }); } })