§コンテントネゴシエーション
コンテントネゴシエーションは、同じリソース (URI) から異なる表現を提供することを可能にする機構です。これは 例えば いくつかの出力フォーマット (XML, JSON, etc.) をサポートする Web サービスを書く場合に便利です。サーバ主導のネゴシエーションは、基本的に Accept*
リクエストヘッダを使って実行されます。HTTP 仕様 で、コンテントネゴシエーションについてもっと詳しい情報を見つけることができます。
§言語
あるリクエストで利用可能な言語の一覧は、Accept-Language
ヘッダからこれらを探して、品質値に従って並び替える play.mvc.Http.RequestHeader#acceptLanguages
を使うことで取得できます。Play はこれを使ってリクエストの HTTP コンテキストに lang
値を設定するので、 最適な言語が使用されます (アプリケーションがサポートしている場合。そうでない場合はアプリケーションのデフォルト言語が使用されます) 。
§コンテンツ
同様に、play.mvc.Http.RequestHeader#acceptedTypes
メソッドは、あるリクエストに対するレスポンスにおいて利用可能な MIME タイプの一覧を提供します。このメソッドは、利用可能な MIME タイプを Accept
リクエストヘッダから検索し、品質値に従って並び替えます。
play.mvc.Http.RequestHeader#accepts
メソッドを使って、現在のリクエストが提供される MIME タイプを利用できるかどうかをテストすることができます:
public Result list() {
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));
}
}
Next: エラーハンドリング
このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。