第48章 コンシューマーへの情報の返却
概要
RESTful 要求では、少なくとも HTTP 応答コードをコンシューマーに返す必要があります。多くの場合、プレーンな JAXB オブジェクトまたは GenericEntity
オブジェクトを返すことで要求を満たすことができます。リソースメソッドが応答エンティティーと共に追加のメタデータを返す必要がある場合、JAX-RS リソースメソッドは必要な HTTP ヘッダーまたは他のメタデータを含む Response
オブジェクトを返すことができます。
48.1. 戻り値のタイプ
コンシューマーに返される情報によって、リソースメソッドが返すオブジェクトの正確なタイプが決まります。これは明白に思えるかもしれませんが、Java の戻りオブジェクトと RESTful コンシューマーに返されるものの間のマッピングは 1 対 1 ではありません。少なくとも、応答エンティティーのボディーに加えて、RESTful コンシューマーは有効な HTTP リターンコードを返す必要があります。Java オブジェクトに含まれるデータの応答エンティティーへのマッピングは、コンシューマーが受け入れる MIME タイプにより変化します。
Java オブジェクトを RESTful 応答メッセージにマッピングする時に発生する問題に対処するために、リソースメソッドは以下の 4 種類の Java コンストラクトを返すことができます。
- 「プレーンな Java コンストラクトを返します。」 JAX-RS ランタイムによって決定される HTTP リターンコードで基本情報を返します。
- 「プレーンな Java コンストラクトを返します。」 JAX-RS ランタイムによって決定される HTTP リターンコードで複雑な情報を返します。
-
「アプリケーションの応答の微調整」 プログラムにより決定された HTTP リターンステータスで複雑な情報を返します。
Response
オブジェクトにより、HTTP ヘッダーを指定することも可能です。 -
「汎用型情報を含むエンティティーの返答」 JAX-RS ランタイムによって決定される HTTP リターンコードで複雑な情報を返します。
GenericEnitity
オブジェクトは、データをシリアライズするランタイムコンポーネントに詳細情報を提供します。