在 Finagle 中打印来自 GET 请求的 JSON 响应
Posted
技术标签:
【中文标题】在 Finagle 中打印来自 GET 请求的 JSON 响应【英文标题】:Print the JSON response from GET request in Finagle 【发布时间】:2022-01-13 17:23:21 【问题描述】:我正在尝试执行 GET 请求并打印我返回的 JSON 响应。 JSON 响应应如下所示。
"request_status": "Success",
"workflow_step": "End"
这是我的代码:
handle(GetStatus) args: GetStatus.Args =>
val client: Service[http.Request, http.Response] =
Http.client.withTlsWithoutValidation.newService("idm-preprod-fe1.twitter.biz:80")
val request = http.Request(
http.Method.Get,
"/plugin/rest/groupmanagement/getStatus/Create Group Request for mygroup (1638800484991)")
request.host = "idm-preprod-fe1.twitter.biz"
Future.value(GetStatusResponse(Option(client(request).toString)))
现在,当我的客户端向服务器发送请求时,我想打印 JSON,但我得到的格式是。有人可以指导我如何实现这一目标。
Promise@1589131174(state=Transforming(WaitQueue(size=1),Promise@1823443423(state=Transforming(WaitQueue(size=1),Promise@859399396(state=Transforming(WaitQueue(size=4),Promise@1441370332(state=Transforming(WaitQueue(size=2),Promise@1459834(state=Transforming(WaitQueue(size=2),Promise@156947070(state=Transforming(WaitQueue(size=1),Promise@1739595981(state=Transforming(WaitQueue(size=1),Promise@273198152(state=Transforming(WaitQueue(size=1),Promise@478329071(state=Transforming(WaitQueue(size=2),Promise@1175786031(state=Transforming(WaitQueue(size=1),Promise@1749285277(state=Transforming(WaitQueue(size=1),Promise@1733124454(state=Transforming(WaitQueue(size=1),Promise@1257379837(state=Transforming(WaitQueue(size=1),Promise@1192050340(state=Transforming(WaitQueue(size=1),Promise@1114225943(state=Transforming(WaitQueue(size=1),Promise@1417620904(state=Transforming(WaitQueue(size=1),Promise@1638767611(state=Interruptible(WaitQueue(size=2),<function1>))))))))))))))))))))))))))))))))))
【问题讨论】:
【参考方案1】:client(request)
正在给你一个Future[http.Response]
:它表示将来某个时间可用的响应。
您不能直接在其上使用toString()
,因为它是Future
,还因为即使它不是Future
,它也会是Response
,这是一个完整的HTTP 响应,而不仅仅是正文。
我建议您阅读更多关于 Future
的工作原理以及如何使用它的信息。
在您的情况下,您应该执行以下操作(伪代码,因为我不熟悉 Twitter 的 Future
):
client(request).map httpResponse =>
val responseBody = httpResponse.body
GetStatusResponse(Option(responseBody))
【讨论】:
以上是关于在 Finagle 中打印来自 GET 请求的 JSON 响应的主要内容,如果未能解决你的问题,请参考以下文章
来自 api 请求的对象在 ForEach 中打印,但不在 List 中
如何在一个 GET 请求中解析来自 Coinbase API 的所有股票代码
一个函数中来自 2 个 API 的 GET 请求(JQuery)
IE 11问题-自动缓存来自GET请求的响应-Reactjs