我是 Scala 和 Spray 的新手。我根据这篇博文中给出的说明编写了一个简单的 REST API。 http://www.smartjava.org/content/first-steps-rest-spray-and-scala
一切都按预期工作。
现在我想修改程序以打印 HTTP 标头,如编码、语言、远程地址等。我想打印所有标头信息(目的是记录这些信息)
但我找不到合适的文档或示例。谁能帮我完成这件事。
我是 Scala 和 Spray 的新手。我根据这篇博文中给出的说明编写了一个简单的 REST API。 http://www.smartjava.org/content/first-steps-rest-spray-and-scala
一切都按预期工作。
现在我想修改程序以打印 HTTP 标头,如编码、语言、远程地址等。我想打印所有标头信息(目的是记录这些信息)
但我找不到合适的文档或示例。谁能帮我完成这件事。
如果您需要提取特定的标头:
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")
}