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 -> {
//
});
}
})