修改默认的content-type
运行结果的content-type是通过response中的返回值来自动推测的,
例如:
val textResult = Ok("Hello World!")
将自动设置 Content-Type 的头为 text/plain。
val xmlResult = Ok(<message>Hello World!</message>)
将自动设置Content-Type为application/xml.
这是一种非常不错的使用方法,但是有的时候想指定特定的Content-type,只需要使用as(newContentType)方法在result上,就可以创建一个值相同Content-type不同的
resultval htmlResult = Ok(<h1>Hello World!</h1>).as("text/html")
或者使用
val htmlResult2 = Ok(<h1>Hello World!</h1>).as(HTML)
设置和丢弃cookies
我们可以简单的去操作cookies,将cookie放入到返回浏览起的response中
增加东西到cookies中
val result = Ok("Hello world")
.withCookies(Cookie("theme", "blue"))
.bakeCookies()
在cookies中删除
val result2 = result.discardingCookies(DiscardingCookie("theme"))
在设置和删除共同在同一个命令中进行操作
val result3 = result.withCookies(Cookie("theme", "blue")).discardingCookies(DiscardingCookie("skin"))
操纵HTTP标头
您还可以向结果添加(或更新)任何HTTP标头:
val result = Ok("Hello World!").withHeaders(
CACHE_CONTROL -> "max-age=3600",
ETAG -> "xx")
请注意,如果原始结果中存在对应的值,则设置HTTP标头将自动丢弃之前的值
设置编码类型:
在http返回中,设置正确的编码类型是非常重要的,Play是默认使用utf-8的
charset的作用是将返回的信息通过某种编码方式转化成对应的socket传递的字节,通过;charset=xxx 来设置
class Application @Inject()(cc: ControllerComponents) extends AbstractController(cc) {
implicit val myCustomCharset = Codec.javaSupported("iso-8859-1")
def index = Action {
Ok(<h1>Hello World!</h1>).as(HTML)
}
}
def HTML(implicit codec: Codec) = {
"text/html; charset=" + codec.charset
}