case GET(Path("/rtb_v1/bidrequest")) => Action { implicit request =>
我想获取上面的请求对象并获取表单中发送的所有键/值对并将其展平为Map [String,String]
我已经阅读了所有文件并且处于死胡同。
这在Java / Servlets中非常简单;我想知道为什么没有关于这样的简单事情的文档......
Map<String, String[]> parameters = request.getParameterMap();
答案 0 :(得分:26)
等同于request.getParamterMap
的游戏是request.queryString
,返回Map[String, Seq[String]]
。您可以使用
Map[String, String]
request.queryString.map { case (k,v) => k -> v.mkString }
答案 1 :(得分:9)
作为Kim的方式的替代方案,我个人使用像...这样的函数。
def param(field: String): Option[String] =
request.queryString.get(field).flatMap(_.headOption)
答案 2 :(得分:1)
如果请求使用POST方法,它将无法工作。可以使用以下代码:
req.body match {
case AnyContentAsFormUrlEncoded(params) ⇒
println(s"urlEncoded = $params")
case mp @ AnyContentAsMultipartFormData(_) ⇒
println(s"multipart = ${mp.asFormUrlEncoded}")
}
答案 3 :(得分:0)
您可能必须使用以下内容:
request.queryString.map { case (k,v) => k -> v.mkString }).toSeq: _*