Red Hat Training

A Red Hat training course is available for Red Hat Fuse

49.2. クライアントターゲットの構築

概要

最初の Client インスタンスの作成後、次のステップはリクエスト URI を構築することです。WebTarget ビルダークラスを使用すると、URI パスやクエリーパラメーターを含む URI のすべての側面を設定できます。

WebTarget ビルダークラス

javax.ws.rs.client.WebTarget ビルダークラスは、リクエストの REST URI を構築できるようにする Fluent API の一部を提供します。

クライアントターゲットを作成する

WebTarget インスタンスを作成するには、javax.ws.rs.client.Client インスタンス上で target メソッドのいずれかを呼び出します。以下に例を示します。

// Java
import javax.ws.rs.client.WebTarget;
...
WebTarget base = client.target("http://example.org/bookstore/");

ベースパスおよびパスセグメント

target メソッドを使用して、完全なパスをすべて一度に指定できます。または、基本パスを指定してから、target メソッドと path メソッドの組み合わせを使用して、パスセグメントを 1 つずつ追加することもできます。ベースパスとパスセグメントを組み合わせる利点は、WebTarget ベースパスオブジェクトを、わずかに異なるターゲット上で複数の呼び出しに対して簡単に再使用できることです。以下に例を示します。

// Java
import javax.ws.rs.client.WebTarget;
...
WebTarget base = client.target("http://example.org/bookstore/");
WebTarget headers     = base.path("bookheaders");
// Now make some invocations on the 'headers' target...
...
WebTarget collections = base.path("collections");
// Now make some invocations on the 'collections' target...
...

URI テンプレートパラメーター

ターゲットパスの構文も URI テンプレートパラメーターをサポートします。つまり、パスセグメントはテンプレートパラメーター {param} で初期化でき、その後に指定値に解決されます。以下に例を示します。

// Java
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Response;
...
WebTarget base = client.target("http://example.org/bookstore/");
WebTarget books = base.path("books").path("{id}");
...
Response resp = books.resolveTemplate("id", "123").request("application/xml").get();

ここで、resolveTemplate メソッドは、パスセグメント {id} を値 123 に置き換えます。

クエリーパラメーターの定義

クエリーパラメーターは URI パスに追加できます。ここでは、URI パスでは、クエリーパラメーターの先頭に 1 つの ? 文字が付けられます。このメカニズムでは、構文 ?name1=value1&name2=value2&…​ を使用して一連の名前/値のペアを設定することができます。

WebTarget インスタンスでは、以下のように queryParam メソッドを使用してクエリーパラメーターを定義できます。

// Java
WebTarget target = client.target("http://example.org/bookstore/")
                         .queryParam("userId","Agamemnon")
                         .queryParam("lang","gr");

マトリックスパラメーターの定義

マトリックスパラメーターはクエリーパラメーターと若干似ていますが、広くサポートされておらず、異なる構文は使用します。WebTarget インスタンスでマトリックス パラメーターを定義するには、matrixParam(String, Object) メソッドを呼び出します。