我有几个组件可以将请求代理到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]]
}
我想以某种方式代理这些请求中的每一个,以便我可以修改请求(例如添加标头)或修改响应。具体来说,我有兴趣添加一些添加的代码:
由于每个特定资源通常具有这三个步骤(在某些情况下,此逻辑在所有资源中都是相同的),因此我想更改http: HttpExt
字段以某种方式应用这些步骤。
使用Akka HTTP可以实现这种功能吗?
我碰到了this question,这似乎涉及到该问题的一部分(特别是有关日志记录/监视的部分),但是可接受的答案似乎是在服务器端而不是客户端使用HTTP指令。