【发布时间】:2018-12-01 03:50:32
【问题描述】:
我正在尝试构建一个自定义的 Akka HTTP 指令,该指令将响应异步映射到另一个。给定以下定义:
trait ResponseFilter {
def apply(request: HttpRequest, response: HttpResponse): Future[HttpResponse]
}
我想构建一个类似于此的指令(无法编译):
def filterResponse(responseFilter: ResponseFilter): Directive0 = {
extractRequest { request =>
mapResponse { response =>
responseFilter(request, response)
}
}
}
编译错误是:
...type mismatch;
[error] found : scala.concurrent.Future[akka.http.scaladsl.model.HttpResponse]
[error] required: akka.http.scaladsl.model.HttpResponse
[error] responseFilter(request, response)
[error] ^
[error] one error found
这是有道理的,因为mapResponse 是同步的。
我知道onSuccess,但它似乎无济于事。
【问题讨论】:
-
编译器错误信息是什么?
-
用编译器错误更新了问题。