Without any additional constraints, parameter('foo) is extracted as a String. You can also us .as[Foo] so long as Foo is something that can be extracted. There are built-in extractions for common things. The `?` makes the param an Option(al) value. That's what I consider to be idiomatic. Always reach for the higher-level tools before dropping down to the raw HttpRequest object.