JavaEE 7をやってみよう。 JAX-RS その2
その1のつづき。
RESTというのは、URLにパラメータを含めることができる。
URLの最後に付けられるクエリのことではなく、
パスそのものがパラメータとして扱える。
「http://localhost:8080/{アプリケーション名}/rest/ship」
前回、このURLでテキストを返すプログラムを書いたが、
これを拡張し、URLからパラメータを取るように変えてみる。
package jaxrs; import javax.enterprise.context.RequestScoped; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; @RequestScoped @Path("ship") public class ShipResource { @GET @Produces("text/plain") public String getText() { return "This is user!"; } @GET @Produces("text/plain") @Path("/{shipid}") public String getShipInfoText(@PathParam("shipid") String shipId) { return "Your ID is " + shipId + "."; } }
getShipInfoTextメソッドを追加したのだが、
ここでのポイントは3つ。
1つ目はメソッドに付けた@Pathアノテーション。
@Pathアノテーションは、クラスとメソッドにつけることができる。
クラスに付けたパスとメソッドに付けたパスは親子関係となる。
アクセスする際は「クラスに付けたパス/メソッドに付けたパス」でアクセスすれば、
目的のメソッドが実行できる。
2つ目は@PathアノテーションのURLに記述されている中括弧。
パスが中括弧で囲われている場合、それは固定のURLではなく、
可変のパラメータとして扱うことができる。
3つ目はメソッド引数につけた@PathParamアノテーション。
@PathParamアノテーションを使うことで、
URLのパラメータをメソッドの引数に渡すことができる。
URL: http://localhost:8080/{アプリケーション名}/rest/ship/aabbccを実行して動作確認をしてみる。
結果はこんな感じ。
ちゃんとURLから値を取得し、メソッドの引数に渡されていることがわかる。
といったところで、次回へ続く。