scala - Akka Streams / HTTP:从响应中获取原始请求
问题描述
我有一个 Akka Streams 源,它通过一个流程并发布一个 HTTP 请求:
source.map(toRequest)
.via(Http().outgoingConnection(host))
.map(toMessage)
假设该toRequest
方法将字符串映射到HttpRequest
,并且该toMessage
方法将 映射HttpResponse
到下游处理所需的消息类。假设消息类需要包含一些原始信息。
是否可以从原版HttpRequest
中获得HttpResponse
?如果没有,有什么办法可以保留一些原始信息?
解决方案
一种方法是使用Future
基于- 的客户端 API 变体和自定义案例类,该类包含您想要向下游传播的信息。例如:
case class Message(request: HttpRequest, response: HttpResponse)
source
.map(toRequest)
.mapAsync(parallelism = 3) { request => // adjust the level of parallelism as needed
Http().singleRequest(request).map(response => Message(request, response))
}
// continue processing; at this point you have a Source[Message, _]
推荐阅读
- firebase-realtime-database - 如何在我的 Firebase 控制台上启用双重身份验证
- css - 水平列表:inline-block vs flex
- python - 将 .mean() 应用于具有条件的分组数据
- c# - CertEnrol import pfx 您输入的密码不正确
- python-3.x - python 正则表达式用法:如何开始,最少匹配,获取中间内容
- python - ValueError:在进行聚类时,输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值
- mysql - 同时使用计数和求和?
- javascript - 三.js 屏幕宽度
- python - 有没有办法计算S n中 D 2n的陪集
- javascript - VueJS 2 无法在mounted()、created() 钩子中发出事件