操作HTTP響應(yīng)

更改默認(rèn)的Content-Type

result的內(nèi)容類型會被自動推斷通過作為響應(yīng)體的Java值.
舉個例子:

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

會自動設(shè)置 Content-Type 響應(yīng)頭為text/plain,當(dāng)結(jié)果是:

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

時 Content-Type 響應(yīng)頭是application/json.
這相當(dāng)有用,但是有時候你可能會想改變它.使用 as(newContentType)方法來創(chuàng)建不同的Content-Type 響應(yīng)頭在相同的結(jié)果:

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

設(shè)置HTTP響應(yīng)頭

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

注意:設(shè)置一個HTTP 響應(yīng)頭會自動覆蓋前一個

設(shè)置和丟棄 cookies

Cookies 是一個特殊的HTTP headers,但是Play提供一系列的方法幫助你更簡單的使用.
你可以很容易的添加Cookie到HTTP響應(yīng):

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

如果你需要設(shè)置更多的細(xì)節(jié),包括 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");

如果您設(shè)置cookie時,設(shè)置了一個路徑或域名,請確保您丟棄Cookie的時候,使用相同的名字,路徑和域名.瀏覽器將會匹配相同的名稱,路徑和域名.

為文本結(jié)果指定一個字符編碼

對于一個基于文本的HTTP響應(yīng)正確的處理字符編碼是非常重要的.Play默認(rèn)使用utf-8作為字符編碼.
這個編碼不止用于將響應(yīng)發(fā)送的socket包中的字節(jié)轉(zhuǎn)換,還會在 Content-Type 頭中添加 ;charset=xxx.
編碼可以在你生成Result的時候指定:

public Result index() { 
        return ok("<h1>Hello World!</h1>", "iso-8859-1").as("text/html; charset=iso-8859-1");
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,837評論 18 139
  • 一、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,413評論 6 152
  • Http協(xié)議詳解 標(biāo)簽(空格分隔): Linux 聲明:本片文章非原創(chuàng),內(nèi)容來源于博客園作者M(jìn)IN飛翔的HTTP協(xié)...
    Sivin閱讀 5,251評論 3 82
  • http協(xié)議有http0.9,http1.0,http1.1和http2三個版本,但是現(xiàn)在瀏覽器使用的是htt...
    一現(xiàn)_閱讀 1,885評論 0 3
  • 本文整理自MIN飛翔博客 [1] 1. 概念 協(xié)議是指計算機通信網(wǎng)絡(luò)中兩臺計算機之間進(jìn)行通信所必須共同遵守的規(guī)定或...
    HoyaWhite閱讀 2,703評論 2 20