user1253952
user1253952

Reputation: 1597

scala play 2.0 get request header

I am converting some of my java code to scala and I would like to be able to get a specific header and return it as a string.

In java I have:

return request().getHeader("myHeader")

I have been unable to achieve the same thing in scala. Any help would be greatly appreciated! Thanks!

Upvotes: 6

Views: 8223

Answers (2)

Govind Singh
Govind Singh

Reputation: 15490

Accepted answer doesn't work for scala with playframework 2.2:

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

It gives me the below error:

value get is not a member of play.api.mvc.Request[play.api.mvc.AnyContent]

use below

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

Upvotes: 5

Travis Brown
Travis Brown

Reputation: 139058

You could write:

request.get("myHeader").orNull

If you wanted something essentially the same as your Java line. But you don't!

request.get("myHeader") returns an Option[String], which is Scala's way of encouraging you to write code that won't throw null pointer exceptions.

You can process the Option in various ways. For example, if you wanted to supply a default value:

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

Or if you want to do something with the header if it exists:

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

Or just:

request foreach doSomething

See this cheat sheet for more possibilities.

Upvotes: 9

Related Questions