要求パラメーターに基づいたコンテンツ・ネゴシエーションの実装
REST (Representational State Transfer) アプリケーションは、リソースの異なる表示を戻すことができます。要求パラメーターに基づいたコンテンツ・ネゴシエーションを使用して、サーバーとクライアントの間でのデータ交換に使用するコンテンツ形式を決定できます。
このタスクについて
リソースはさまざまな形式でデータを表示できます。URL、要求パラメーター、または HTTP ヘッダーに基づいたコンテンツ・ネゴシエーションを実装できます。このタスクでは、さまざまなデータ形式の受信に使用する要求パラメーターに基づいたコンテンツ・ネゴシエーションについて説明します。
照会パラメーターなどの要求パラメーターを使用すると、サーバーが戻すコンテンツのタイプを示すことができます。例えば、パラメーター値が xml の場合、サーバーは XML コンテンツを戻すことが予想されます。同様に、パラメーター値が json の場合、サーバーは JSON コンテンツを戻すことが予想されます。
要求パラメーターを使用すると、URL パターンに基づいたコンテンツ・ネゴシエーションを実装した場合よりも URL の数が少なくなります。ただし、この方法では、リソース・メソッド実装においてパラメーターを使用および構文解析する必要があります。
手順
パラメーターを使用して、サーバーが戻すデータのコンテンツ・タイプを決定します。
次の例では XML および JSON のデータ形式が使用可能で、形式は照会パラメーターで指定されています。デフォルトでは、XML が戻されます。/resources/resource?format=json への要求によって、サーバーから JSON 形式が戻されます。例:
@Path("/resources")
public class Resource
{
@Path("{resourceID}")
@GET
public Response getResource(@PathParam("resourceID") String resourceID, @QueryParam("format") String format)
{
if (format == null || "xml".equals(format)) {
return Response.ok(/* entity in XML format */).type(MediaType.APPLICATION_XML).build();
} else if ("json".equals(format)) {
return Response.ok(/* entity in JSON format */).type(MediaType.APPLICATION_JSON).build();
}
return Response.notAcceptable(Variant.mediaTypes(MediaType.APPLICATION_XML_TYPE, MediaType.APPLICATION_JSON_TYPE).add().build()).build();
}
}
タスクの結果
データを表示するリソース形式をパラメーターを使用して決定する、コンテンツ・ネゴシエーションを実装できました。