Как я могу вернуть неудачный ответ из директивы по распылению?

Я реализую простой HTTP-сервер маршрутизации, который должен проанализировать несколько полей во входящем запросе и отправить его на внутренний сервер, после чего он должен вернуть ответ вызывающему абоненту, как есть. Я также хочу регистрировать время ожидания ответа от внутреннего сервера. Моя директива выглядит так

complete {

  val pipeline: HttpRequest => Future[String] = sendReceive ~> unmarshal[String]
  val response: Future[String] = pipeline(Post("https://my_internal_serverservices/MainService", payload.toString()))
  response

}

Но это работает только для HTTP 200 ответов. Для других кодов возврата будущее никогда не завершается.

Не могли бы вы продемонстрировать, как правильно это реализовать? В идеале я хотел бы направлять запросы в исходном состоянии - со всеми заголовками http и т. Д.

1 ответ

Решение

Как отметил Рудольф, проблема заключалась в использовании unmarshal,

Другие вопросы по тегам