§内容协商
内容协商是一种机制,它可以为同一个资源 (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));
}
}
发现文档中的错误?此页面的源代码可以在 这里 找到。阅读完 文档指南 后,请随时贡献一个 pull 请求。有疑问或建议要分享?前往 我们的社区论坛 与社区进行交流。