You are viewing the documentation for the 2.1.5 release in the 2.1.x series of releases. The latest stable release series is 2.4.x.
§コンテントネゴシエーション
コンテントネゴシエーションは、同じリソース (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 static Result list() {
List<Item> items = Item.find.all();
if (request().accepts("text/html")) {
return ok(views.html.Application.list.render(items));
} else {
ObjectNode result = Json.newObject();
...
return ok(result);
}
}
Next: 非同期 HTTP プログラミング