JAX-RSとは?
JavaEE6から入ったRESTful APIを作成するのに適したフレームワーク。
JAX-RSの使い始め方
JAX-RSに対応したサーバはApplicationのサブクラスを検知すると、
後述のリソースクラスなどを読み込んで自動で立ち上がってくれる
javax.ws.rs.core.Application
を継承する@ApplicationPath
でルートパスを設定する
(http://<ホスト名>/<コンテキストパス>/<ルートパス>)
import javax.ws.rs.core.Application; @ApplicationPath("app") public class TestApplication extends Application{ }
リソースクラス
HTTPリクエストを受け取るクラスをリソースクラス、
HTTPリクエストに応じて実行されるメソッドをリソースメソッドと呼ぶ。
リソースメソッドの振る舞いは様々なアノテーションで定義する。
よく使うアノテーション
@Path
が記載されていればリソースクラスとして認識される。
(<ルートパス>/<リクエスト用パス>)@Path
はメソッドに定義することもできる@GET @POST @PUT @DELETE
の記述でどのHTTPメソッドに対応しているか定義する。- リクエストのパラメータは
@QueryParam
アノテーションの記載された変数で受け取ることができる @Path
に{id}
のような形で記述すると、@PathParam("id")
アノテーションで変数に受け取らせる事ができる@FormParam("input-name")
でフォームからPOSTされた値を受け取ることができる@Produces()
でContent-Typeを設定できる@DefaultValue
でパラメータのデフォルト値を設定できる
@Path("/test") public class TestResource{ @QueryParam("hoge") private String hoge; @GET @Path("{id}") @Produce("application/json") public Test getTest(@PathParam("id") String id){ @DefaultValue("noname") @QueryParam("name") private String name; return service.findById(id, name, hoge); } }