jerseyで使用されるアノテーション#
@GET
,@PUT
,@POST
@DELETE
,@HEAD
- 参考
- 上記のアノテーションを付けることでHTTPメソッドを指定できる
@Path
- 参考
- 上記のアノテーションを付けることでAPIのパスを指定できる
@Produces
- レスポンスのMIMEタイプを指定するのに使う
@BeanParam
- 参考
- 他の場所でクラスにまとめて定義したリクエストパラメータを注入するのに使用する
@Consumes
- 参考
- リクエストのMIMEタイプを指定するのに使う
@PathParam
- 参考
- パスパラメータを取得するのに使用する
@Provider
- @Providerアノテーションが付けられたクラスは、JAX-RS(Java API for RESTful Web Services)アプリケーションのコンポーネントとして認識される。
- Jerseyによって自動的に検出され、アプリケーションの実行時に適切なタイミングで利用されるらしい。
レスポンスについて#
- 参考
- Response型でメソッドを作ってreturnすればOK
- 例として200を返す時のコードは以下
public Response r() { return Response.status(Status.OK).build(); }
Jerseyにおけるレスポンスの返し方#
- レスポンスとしてインスタンス化したクラスをそのままreturnする場合と、
javax.ws.rs.core.Response
を使ってレスポンスを返している所があり使い分けが分からなくなったのでここにメモしておく - インスタンス化したクラスをそのままreturnする方法は
@Produces({ MediaType.APPLICATION_JSON })
アノテーションを付けることにより、Jerseyが自動でJSONとしてシリアライズしてくれるのでそのままレスポンスとして返せる- この方法ではレスポンスをシンプルに作成できるが、レスポンスコードは必ず200が設定される
- そのため、200以外のレスポンスコードの設定したい場合はjavax.ws.rs.core.Responseを使用する必要がある
リクエストヘッダー等の取得#
以下のコードのように@Context ContainerRequestContext contextと書くとリクエストヘッダー等の情報を取得できる
public Response instances(
@Context ContainerRequestContext context,
@Context HttpServletResponse response
) {}