scala play 2.0获取请求标头

use*_*952 6 scala httprequest http-headers playframework

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

在java我有:

return request().getHeader("myHeader")
Run Code Online (Sandbox Code Playgroud)

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

Tra*_*own 7

你可以写:

request.get("myHeader").orNull
Run Code Online (Sandbox Code Playgroud)

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

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

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

val h: String = request.get("myHeader").getOrElse("")
Run Code Online (Sandbox Code Playgroud)

或者,如果您想对标题执行某些操作(如果存在):

request.foreach { h: String => doSomething(h) }
Run Code Online (Sandbox Code Playgroud)

要不就:

request foreach doSomething
Run Code Online (Sandbox Code Playgroud)

有关更多可能性,请参阅此备忘单.


Gov*_*ngh 5

接受的答案不适用于带有 playframework 2.2 的 Scala:

request.get("myHeader").getOrElse("")
Run Code Online (Sandbox Code Playgroud)

它给了我以下错误:

value get 不是 play.api.mvc.Request[play.api.mvc.AnyContent] 的成员

下面使用

request.headers.get("myHeader").getOrElse("") 
Run Code Online (Sandbox Code Playgroud)