Я пытаюсь создать собственную HTTP-директиву Akka, которая асинхронно отображает ответ другому.Учитывая следующее определение:
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
, но, похоже, это не помогает.