gpt4 book ai didi

scala - 如何在不显式映射结果的情况下转发 WSResponse

转载 作者:行者123 更新时间:2023-12-01 08:54:24 24 4
gpt4 key购买 nike

所以我有以下操作,我想找到一种方法来直接返回响应,而不必将其映射到每个可能的状态代码的结果,即跳过 if-else 部分。

def testAction = Action { implicit requestIn => {

val requestOut : WSRequest = WS.url("test-domain-name:9998")

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

val futureResponse : Future[WSResponse] = requestOut.withQueryString(queryString.toList: _*).get()

val response = Await.result(requestOut.withQueryString(queryString.toList: _*).get(), 5 seconds)

if(response.status == 200) {
Ok(response.xml)
} else {
BadRequest(response.body)
}

}

最佳答案

你不应该等待结果。 Play 框架支持异步操作:

def testAction = Action.async { implicit requestIn =>

val requestOut: WSRequest = WS.url("test-domain-name:9998")

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

val futureResponse: Future[WSResponse] = requestOut.withQueryString(queryString.toList: _*).get()

futureResponse

}

和隐式转换:
implicit def Response2Result(response: Future[WSResponse]): Future[Result] = {
response map {
response =>
val headers = response.allHeaders map {
h => (h._1, h._2.head)
}
Result(ResponseHeader(response.status, headers), Enumerator(response.body.getBytes))
}
}

github issue .

关于scala - 如何在不显式映射结果的情况下转发 WSResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31135734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com