§コンテンツネゴシエーション
コンテンツネゴシエーションは、同じリソース (URI) の異なる表現を提供することを可能にするメカニズムです。これは、複数の出力形式 (XML、JSON など) をサポートする Web サービスを作成する場合などに役立ちます。サーバー主導のネゴシエーションは、本質的に Accept*
リクエストヘッダーを使用して実行されます。コンテンツネゴシエーションの詳細については、HTTP 仕様 を参照してください。
§言語
リクエストで許容される言語のリストは、Accept-Language
ヘッダーからそれらを取得し、品質値に従ってソートする play.mvc.Http.RequestHeader#acceptLanguages
メソッドを使用して取得できます。Play は、リクエストの言語を決定するために play.i18n.MessagesApi#preferred(Http.RequestHeader)
を呼び出す際にこれを使用するため、このメソッドは自動的に最適な言語を使用します(アプリケーションでサポートされている場合。サポートされていない場合は、アプリケーションのデフォルト言語が使用されます)。
§コンテンツ
同様に、play.mvc.Http.RequestHeader#acceptedTypes
メソッドは、リクエストに対する許容可能な結果の MIME タイプのリストを提供します。これは、Accept
リクエストヘッダーからそれらを取得し、品質係数に従ってソートします。
現在のリクエストで特定の MIME タイプが許容可能かどうかは、play.mvc.Http.RequestHeader#accepts
メソッドを使用してテストできます。
public Result list(Http.Request request) {
List<Item> items = Item.find.all();
if (request.accepts("text/html")) {
return ok(views.html.Application.list.render(items));
} else {
return ok(Json.toJson(items));
}
}
このドキュメントに誤りを見つけた場合、このページのソースコードは こちら で確認できます。ドキュメントガイドライン を読んでから、プルリクエストを自由に送ってください。質問やアドバイスがあれば、コミュニティフォーラム でコミュニティとの会話を開始してください。