Как я могу вернуть неудачный ответ из директивы по распылению?
Я реализую простой 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
,