Scala下Play框架学习笔记(Manipulating Results)
admin
2023-08-01 22:20:08
0

更改默认的content type

      根据响应体中指定的scala值,可以自动地推断出结果的content type,举例如下:

     

val textResult = Ok("Hello World!")

这将自动地把content-type的头部设置成text/plain,同时:

val xmlResult = Ok(Hello World!)

这个会把头部设置成application/xml

以上通过play.api.http.ContentTypeOf这个类来实现。用as(newContentType)可以强制转换header的content type,

val htmlResult = Ok(

Hello World!

).as("text/html")

或者如下:

val htmlResult2 = Ok(

Hello World!

).as(HTML)

使用HTML类型,头部会被自动设置成text/html; charset=utf-8。

可以在结果中添加HTTP头部:

val result = Ok("Hello World!").withHeaders(
  CACHE_CONTROL -> "max-age=3600",

  ETAG -> "xx")

Cookies是一个特殊格式的HTTP头部,使用一系列的帮助类使他变得更容易。把Cookies加入到HTTP响应中:

val result = Ok("Hello world").withCookies(

  Cookie("theme", "blue"))

丢弃浏览器存放的cookies:

val result2 = result.discardingCookies(DiscardingCookie("theme"))

两者还可以混用:

val result3 = result.withCookies(Cookie("theme", "blue")).discardingCookies(DiscardingCookie("skin"))

更改文本类型的HTTP响应的字符集

HTTP响应默认使用utf-8

字符集不仅用来把文本响应转换成对应的字节流,进行网络传输, 而且用";charset=xxx"来更新content-type头部。

通过play.api.mvc.Codec这个类,字符集被自动处理。在当前范围内,导入play.api.mvc.Codec这个隐式类可以更改字符集,用以下的方式操作:

class Application extends Controller {

  implicit val myCustomCharset = Codec.javaSupported("iso-8859-1")

  def index = Action {
    Ok(

Hello World!

).as(HTML)
  }

}

关于HTML的定义:

def HTML(implicit codec: Codec) = {
  "text/html; charset=" + codec.charset

}


相关内容

热门资讯

华电科工获得实用新型专利授权:... 证券之星消息,根据天眼查APP数据显示华电科工(601226)新获得一项实用新型专利授权,专利名为“...
中集集团获得实用新型专利授权:... 证券之星消息,根据天眼查APP数据显示中集集团(000039)新获得一项实用新型专利授权,专利名为“...
原创 科... 最近科学家公布了一个让很多人感到意外的发现,陪伴了地球45亿年的月球,正在以每年3.8厘米的速度悄悄...
福建省交通运输系统全力迎战台风... 福州7月9日电 (记者 闫旭 通讯员 陈勤思)今年第9号超强台风“巴威”正逐步逼近福建省沿海,福建省...
从“简易理疗”到“智慧康复” 从“简易理疗”到“智慧康复” 彭州西郊社区卫生服务中心探索基层康复新路径 患者在中心开展康复治疗。...
这位CEO为何认为游戏数据比互... 在实现通用人工智能(AGI)的道路上,大语言模型似乎并不是最终答案。ChatGPT和Claude等模...
Meta入局AI代码大模型赛道... 来源:环球市场播报 核心要点 Meta 推出 Muse Spark 大模型重大更新,并公布定价方...
同济科技夏令营落幕,900余名... 昨天(7月7日)下午,同济大学2026年中学生科技夏令营落幕。来自同济大学各附属学校、集团校、托管县...
超级算法大幅提升暗能量测量精度 西班牙巴塞罗那大学领衔的国际团队在最新一期《自然·天文》发表一项研究成果称,他们开发出一套名为CIG...
唯一中国玩家!国星宇航入选IT... 2026年7月7日,在瑞士日内瓦举行的2026人工智能向善全球峰会(AI for Good Glob...