Как получить информацию заголовка HTTP-запроса со стороны сервера с помощью спрея RestAPI
Я новичок в Scala и Spray. Я написал простой REST API в соответствии с инструкциями, приведенными в этом блоге. http://www.smartjava.org/content/first-steps-rest-spray-and-scala
И все работают как положено.
Теперь я хочу изменить программу для печати заголовков HTTP, таких как Encoding, Language, remote-address и т. Д. Я хотел бы напечатать всю информацию заголовка (цель состоит в том, чтобы зарегистрировать эту информацию)
Но я не мог найти надлежащую документацию или примеры. Может ли кто-нибудь, пожалуйста, помогите мне сделать это.
2 ответа
Если вам нужно извлечь конкретный заголовок:
optionalHeaderValueByName("Encoding") { encodingHeader =>
println(encodingHeader)
complete("hello")
}
в качестве альтернативы вы можете получить доступ к необработанному объекту запроса и непосредственно извлечь заголовки. Вот пользовательская директива, которая регистрирует все заголовки:
def logHeaders(): Directive0 = extract(_.request.headers).map(println)
использование
logHeaders() {
complete("hello")
}
Вот как я получил это работает.
Директива:
def logHeaders(innerRoute: Route): (RequestContext => Unit) = extract(_.request.headers) { headers =>
headers.foreach(h => logger.info("header: {} = {}", h.name, h.value))
innerRoute
}
Использование:
logHeaders() {
complete("hello")
}