14
 case GET(Path("/rtb_v1/bidrequest")) => Action {  implicit request =>

上記のリクエストオブジェクトを取得し、フォームの投稿で送信されたすべてのキーと値のペアを取得して、Map [String、String]にフラット化します。

私はすべての文書を読み終え、行き止まりになっています。

これは、Java/サーブレットでは非常に簡単です。なぜこのような単純なものに関するドキュメントがどこにもないのか疑問に思っています。

Map<String, String[]> parameters = request.getParameterMap();
4

4 に答える 4

27

Playに相当するのrequest.getParamterMaprequest.queryString、です。これは。を返しますMap[String, Seq[String]]Map[String, String]あなたはそれをで平らにすることができます

request.queryString.map { case (k,v) => k -> v.mkString }

そして、ここにドキュメントがあります。

于 2012-11-13T05:32:25.573 に答える
9

キムのやり方の代わりに、私は個人的に次のような関数を使用します。

def param(field: String): Option[String] = 
  request.queryString.get(field).flatMap(_.headOption)
于 2012-11-13T05:46:25.277 に答える
2

リクエストがPOSTメソッドを使用している場合は機能しません。次のコードを使用できます。

req.body match {
  case AnyContentAsFormUrlEncoded(params) ⇒
    println(s"urlEncoded = $params")
  case mp @ AnyContentAsMultipartFormData(_) ⇒
    println(s"multipart = ${mp.asFormUrlEncoded}")
}
于 2014-07-04T15:42:55.840 に答える
0

次のものを使用する必要がある場合があります。

request.queryString.map { case (k,v) => k -> v.mkString }).toSeq: _*
于 2015-03-17T16:03:41.630 に答える