Как я могу перехватывать запросы клиентов HTTP, сделанные с помощью Akka HTTP? - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть несколько компонентов, которые прокси-запросы запрашивают 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-директивы на стороне сервера, а не на клиенте.

...