文件

§內容協商

內容協商是一種機制,可以提供同一資源 (URI) 的不同表示形式。它很有用,例如用於撰寫支援多種輸出格式 (XML、JSON 等) 的 Web 服務。伺服器驅動的協商基本上使用 Accept* 要求標頭來執行。您可以在 HTTP 規範 中找到更多有關內容協商的資訊。

§語言

您可以使用 play.mvc.Http.RequestHeader#acceptLanguages 方法取得要求的可接受語言清單,此方法會從 Accept-Language 標頭中擷取清單,並根據其品質值對清單進行排序。當呼叫 play.i18n.MessagesApi#preferred(Http.RequestHeader) 以判斷要求的語言時,Play 會使用此方法,因此此方法會自動使用最佳語言 (如果您的應用程式支援,否則會使用應用程式的預設語言)。

§內容

同樣地,play.mvc.Http.RequestHeader#acceptedTypes 方法提供要求的可接受結果 MIME 類型的清單。它會從 Accept 要求標頭中擷取它們,並根據它們的品質因子對它們進行排序。

你可以使用 play.mvc.Http.RequestHeader#accepts 方法測試給定的 MIME 類型是否可接受目前的請求

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));
  }
}

下一步:HTTP 要求處理常式 / ActionCreator


在此文件檔中發現錯誤?此頁面的原始碼可以在 這裡 找到。在閱讀 文件檔指南 後,請隨時貢獻一個 pull request。有問題或建議要分享?前往 我們的社群論壇 與社群開始對話。