如何在Play和Scala中获取所有请求参数

Rya*_*lin 13 scala playframework

 case GET(Path("/rtb_v1/bidrequest")) => Action {  implicit request =>
Run Code Online (Sandbox Code Playgroud)

我想获取上面的请求对象并获取在表单中发送的所有键/值对并将其展平为Map [String,String]

我已经完成了所有的文件,并且走到了尽头.

这在Java/Servlets中非常简单;我想知道为什么没有像这样的简单事情的文档.

Map<String, String[]> parameters = request.getParameterMap();
Run Code Online (Sandbox Code Playgroud)

Kim*_*bel 26

Play的等价物request.getParamterMaprequest.queryString,返回一个Map[String, Seq[String]].你可以把它展平到Map[String, String]

request.queryString.map { case (k,v) => k -> v.mkString }
Run Code Online (Sandbox Code Playgroud)

这是文档.


Iva*_*ith 9

作为Kim的方式的替代方案,我个人使用像...这样的功能.

def param(field: String): Option[String] = 
  request.queryString.get(field).flatMap(_.headOption)
Run Code Online (Sandbox Code Playgroud)