文档

§内容协商

内容协商是一种机制,它可以为同一个资源 (URI) 提供不同的表示形式。它对于编写支持多种输出格式(XML、JSON 等)的 Web 服务很有用。服务器驱动的协商本质上是使用 Accept* 请求头执行的。您可以在 HTTP 规范 中找到有关内容协商的更多信息。

§语言

您可以使用 play.mvc.Http.RequestHeader#acceptLanguages 方法获取请求的可接受语言列表,该方法从 Accept-Language 头部获取它们并根据它们的质量值对它们进行排序。Play 在调用 play.i18n.MessagesApi#preferred(Http.RequestHeader) 来确定请求的语言时使用它,因此此方法会自动使用最佳语言(如果您的应用程序支持,否则将使用您的应用程序的默认语言)。

§内容

类似地,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 请求。有疑问或建议要分享?前往 我们的社区论坛 与社区进行交流。