Menu Close

48.3.2. 一般的なユースケースに対するレスポンスの作成

概要

Response クラスは、RESTful サービスが必要とするより一般的な応答を処理するためのショートカットメソッドを提供します。これらのメソッドは、提供される値またはデフォルト値を使用して適切なヘッダーを設定します。また、必要に応じて、エンティティーボディーの入力も処理します。

正常リクエストに対するレスポンスの作成

リクエストが正常に処理されると、アプリケーションはリクエストが満たされたことを確認するためにレスポンスを送信する必要があります。この応答にはエンティティーが含まれることがあります。

応答を正常に完了した場合の最も一般的な応答は OK です。OK 応答には通常、リクエストに対応するエンティティーが含まれます。Response クラスには、応答のステータスを 200 に設定し、指定されたエンティティーを囲まれた応答ビルダーに追加するオーバーロードされた ok() メソッドがあります。ok() メソッドには 5 つのバージョンがあります。最も一般的に使用されるバリアントは次のとおりです。

  • Response.ok()- 200 のステータスおよび空のエンティティーボディーでレスポンスを作成します。
  • Response.ok(java.lang.Object entity)- 200 のステータスで応答を作成し、指定されたオブジェクトを応答エンティティーボディーに保存します。また、オブジェクトのイントロスペクションによるエンティティーメディア型を決定します。

200 応答での応答の作成 は、OK ステータスで応答を作成する例を示しています。

200 応答での応答の作成

import javax.ws.rs.core.Response;
import demo.jaxrs.server.Customer;
...

Customer customer = new Customer("Jane", 12);

return Response.ok(customer).build();

要求元がエンティティーボディーを期待しない場合は、200 OK のステータスではなく 204 No Content ステータスを送信する方が適切な場合があります。Response.noContent() メソッドにより、適切な応答オブジェクトが作成されます。

204 ステータスでの応答の作成 は、204 ステータスで応答を作成する例を示しています。

204 ステータスでの応答の作成

import javax.ws.rs.core.Response;

return Response.noContent().build();

リダイレクトの応答の作成

Response クラスは、3 つのリダイレクト応答ステータスを処理するメソッドを提供します。

303 See Other

303 See Other ステータスは、リクエストされたリソースが要求を処理するためにコンシューマを新しいリソースに永続的にリダイレクトする必要がある場合に便利です。

Response クラスの seeOther() メソッドは、303 のステータスで応答を作成し、新しいリソース URI をメッセージの Location フィールドに配置します。seeOther() メソッドは、新しい URI を java.net.URI オブジェクトとして指定する単一のパラメーターを取ります。

304 Not Modified

304 Not Modified ステータスは、リクエストの性質に応じてさまざまなものに使用できます。前回の GET リクエスト以降、要求されたリソースが変更されていないことを示すことができます。また、リソースの変更要求によってリソースが変更されなかったことを示す場合にも使用できます。

Response クラスの notModified() メソッドは 304 ステータスで応答を作成し、HTTP メッセージに変更された日付プロパティーを設定します。notModified() メソッドには 3 つのバージョンがあります。

  • notModified
  • notModifiedjavax.ws.rs.core.Entitytag
  • notModifiedjava.lang.Stringtag
307 Temporary Redirect

307 Temporary Redirect ステータスは、要求されたリソースがコンシューマーを新しいリソースに転送する必要があるものの、このリソースを引き続き使用して今後の要求を処理する場合に役立ちます。

Response クラスの temporaryRedirect() メソッドは、307 のステータスで応答を作成し、新しいリソース URI をメッセージの Location フィールドに配置します。temporaryRedirect() メソッドは、新しい URI を java.net.URI オブジェクトとして指定する単一のパラメーターを取ります。

304 ステータスでの応答の作成 は、304 ステータスで応答を作成する例を示しています。

304 ステータスでの応答の作成

import javax.ws.rs.core.Response;

return Response.notModified().build();

シグナルエラーへの応答の作成

Response クラスは、2 つの基本的な処理エラーに対する応答を作成するメソッドを提供します。

  • serverError - 500 Internal Server Error のステータスでレスポンスを作成します。
  • notAcceptablejava.util.List<javax.ws.rs.core.Variant>variants - 406 Not Acceptable ステータスと、許容可能なリソース型の一覧が含まれるエンティティーボディーでレスポンスを作成します。

500 ステータスでの応答の作成 は、500 ステータスで応答を作成する例を示しています。

500 ステータスでの応答の作成

import javax.ws.rs.core.Response;

return Response.serverError().build();