第4章 @PathParam
@PathParam は変数 URI パスフラグメントをメソッド呼び出しへマップできるようにします。
これにより、 リソースの URI に変数 ID を組み込むことができます。 前述の例を見ると、 アクセスしたい book の情報を
isbn URI パラメータが渡していることが分かります。 プリミティブパラメータタイプ、 ストリング、 ストリングパラメータを取る Java オブジェクト、またはストリングパラメータを取る静的 valueOf メソッドを挿入することができます。 例えば、 isbn を真のオブジェクトにしたい場合、 次を書き込みます。
また、 公開ストリングコンストラクタの代わりに
valueOf メソッドを使用することもできます。
public class ISBN {
public static ISBN valueOf(String isbn) {...}
}
public class ISBN {
public static ISBN valueOf(String isbn) {...}
}
4.1. 上級の @PathParam および正規表現 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
さらに複雑な
@PathParam の使用方法もあります。
1 つの URI セグメントに組み込まれた 1 つまたは複数の
@PathParam を指定することができます。
1. @Path("/aaa{param}bbb")
2. @Path("/{name}-{zip}")
3. @Path("/foo{name}-{zip}bar")
1. @Path("/aaa{param}bbb")
2. @Path("/{name}-{zip}")
3. @Path("/foo{name}-{zip}bar")
フォーム "/aaa111bbb" の URI は指定された最初のパラメータと一致します。 "/bill-02115" は 2 つ目のパラメータ、 "foobill-02115bar" は 3 つ目のパラメータと一致します。
「@Path と正規表現のマッピング」 では、 次のように
@Path 値内で正規表現が使用できることを説明しました。
@GET
@Path("/aaa{param:b+}/{many:.*}/stuff")
public String getIt(@PathParam("param") String bs, @PathParam("many") String many) {...}
@GET
@Path("/aaa{param:b+}/{many:.*}/stuff")
public String getIt(@PathParam("param") String bs, @PathParam("many") String many) {...}
このように
@Path が定義されると、 要求 GET /aaabb/some/stuff は bb の "param" 値と、some の "many" 値を持つようになります。 要求 GET /aaab/a/lot/of/stuff は "param" が値の b と "many" が値の a/lot/of を持つようになります。