操作HTTP响应

更改默认的Content-Type

result的内容类型会被自动推断通过作为响应体的Java值.
举个例子:

Result textResult = ok("Hello World!");

会自动设置 Content-Type 响应头为text/plain,当结果是:

JsonNode json = Json.toJson(object);
Result jsonResult = ok(json);

时 Content-Type 响应头是application/json.
这相当有用,但是有时候你可能会想改变它.使用 as(newContentType)方法来创建不同的Content-Type 响应头在相同的结果:

Result htmlResult = ok("<h1>Hello World!</h1>").as("text/html");

设置HTTP响应头

public Result index() {
             response().setContentType("text/html");
             response().setHeader(CACHE_CONTROL, "max-age=3600");
             response().setHeader(ETAG, "xxx");
             return ok("<h1>Hello World!</h1>");
}

注意:设置一个HTTP 响应头会自动覆盖前一个

设置和丢弃 cookies

Cookies 是一个特殊的HTTP headers,但是Play提供一系列的方法帮助你更简单的使用.
你可以很容易的添加Cookie到HTTP响应:

response().setCookie("theme", "blue");

如果你需要设置更多的细节,包括 path,domain,expiry你可以重载方法:

response().setCookie( 
      "theme", // name
      "blue", // value 
      3600, // maximum age 
      "/some/path", // path 
      ".example.com", // domain 
      false, // secure 
      true // http only
);

抛弃一个之前存储在浏览器的Cookie:

response().discardCookie("theme");

如果您设置cookie时,设置了一个路径或域名,请确保您丢弃Cookie的时候,使用相同的名字,路径和域名.浏览器将会匹配相同的名称,路径和域名.

为文本结果指定一个字符编码

对于一个基于文本的HTTP响应正确的处理字符编码是非常重要的.Play默认使用utf-8作为字符编码.
这个编码不止用于将响应发送的socket包中的字节转换,还会在 Content-Type 头中添加 ;charset=xxx.
编码可以在你生成Result的时候指定:

public Result index() { 
        return ok("<h1>Hello World!</h1>", "iso-8859-1").as("text/html; charset=iso-8859-1");
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,323评论 19 139
  • 一、概念(载录于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434阅读 12,682评论 6 152
  • Http协议详解 标签(空格分隔): Linux 声明:本片文章非原创,内容来源于博客园作者MIN飞翔的HTTP协...
    Sivin阅读 10,604评论 3 82
  • http协议有http0.9,http1.0,http1.1和http2三个版本,但是现在浏览器使用的是htt...
    一现_阅读 5,872评论 0 3
  • 本文整理自MIN飞翔博客 [1] 1. 概念 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或...
    HoyaWhite阅读 7,555评论 2 20