簡體   English   中英

使用請求主體的Scala Play框架POST請求

[英]Scala Play framework POST request using request body

我正在嘗試創建一個POST端點,該端點使用Web服務使用請求主體中的數據作為參數來進行外部API調用。 例如,假設從我的客戶端,我用主體向服務器發出POST請求:

{
  "one": 1,
  "two": 2,
  "three": 3
}

我希望后端發出外部http請求,例如:

GET "http://api_url?one=1&two=2&three=3"

我是一名JS程序員,是Scala和Play框架的新手,似乎無法弄清楚如何訪問正文並將其映射到url中。 這是我到目前為止所擁有的...

def getAll = Action { request =>
  val url = "http://api_url?"
  val body = request.body

  body.map { param =>
    url += param.key + "=" + param.value + "&"
  }

  ws.url(url).post
}

您可以將查詢字符串作為Map[String, Seq[String]]拉出,可以使用以下方法將其展平為Map[String, String]

val m = request.queryString.map { case (k, v) => (k, v.head) }

然后,您可以遍歷Map (就像您一樣,也可以使用.map):

@ m.map { case (k, v) => k + "=" + v }
res3: collection.immutable.Iterable[String] = List("a=1", "c=3")

@ m.map { case (k, v) => k + "=" + v }.mkString("&")
res4: String = "a=1&c=3"

注意:如果您知道查詢字符串鍵是什么(並希望對其進行限制),則可以將它們顯式傳遞給路由文件中的Action。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM