如何截获Akka HTTP发出的HTTP客户端请求?

时间:2018-12-03 06:04:11

标签: scala akka-http

我有几个组件可以将请求代理到REST服务,并根据需要反序列化结果。例如,类似:

import akka.http.scaladsl.HttpExt
trait UsersResource {
  val http: HttpExt
  def getUser(id: String): Future[User] = http.singleRequest(HttpRequest(...))
      .flatMap(r => Unmarshal(r.entity).to[User])

  def findUsers(query: Any): Future[List[User]]
}

我想以某种方式代理这些请求中的每一个,以便我可以修改请求(例如添加标头)或修改响应。具体来说,我有兴趣添加一些添加的代码:

  • 记录和监视请求/响应
  • 向每个请求添加cookie
  • 向请求添加身份验证
  • 转换响应主体

由于每个特定资源通常具有这三个步骤(在某些情况下,此逻辑在所有资源中都是相同的),因此我想更改http: HttpExt字段以某种方式应用这些步骤。

使用Akka HTTP可以实现这种功能吗?

我碰到了this question,这似乎涉及到该问题的一部分(特别是有关日志记录/监视的部分),但是可接受的答案似乎是在服务器端而不是客户端使用HTTP指令。

0 个答案:

没有答案