B-Teck!

お仕事からゲームまで幅広く

【Java】JAX-RSの自分用メモ

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