Documentation

You are viewing the documentation for the 2.1.x release series. 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 プログラミング


このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。