У меня есть несколько компонентов, которые прокси-запросы запрашивают 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?
Я встречал этот вопрос , который, кажется, касается частиэтот вопрос (в частности, часть о регистрации / мониторинге), однако принятый ответ, по-видимому, использует HTTP-директивы на стороне сервера, а не на клиенте.