scala play 2.0获取请求标头

时间:2012-07-20 18:10:33

标签: scala playframework http-headers httprequest

我正在将我的一些java代码转换为scala,我希望能够获得一个特定的标头并将其作为字符串返回。

在java中我有:

return request().getHeader("myHeader")

我无法在scala中实现同样的功能。任何帮助将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:7)

你可以写:

request.get("myHeader").orNull

如果你想要与Java系列基本相同的东西。但你没有!

request.get("myHeader")返回Option[String],这是Scala鼓励您编写不会抛出空指针异常的代码的方法。

您可以通过各种方式处理Option。例如,如果要提供默认值:

val h: String = request.get("myHeader").getOrElse("")

或者如果您想对标题执行某些操作:

request.foreach { h: String => doSomething(h) }

或者只是:

request foreach doSomething

有关更多可能性,请参阅this cheat sheet

答案 1 :(得分:4)

当我尝试使用playframework 2.2上面的scala回答:

request.get("myHeader").getOrElse("")

它给出了以下错误:

  

值get不是其成员   play.api.mvc.Request [play.api.mvc.AnyContent]

当我使用时:

request.headers.get("myHeader").getOrElse("") 

这现在有效。我建议用这个。