4

我是 Scala 和 Spray 的新手。我根据这篇博文中给出的说明编写了一个简单的 REST API。 http://www.smartjava.org/content/first-steps-rest-spray-and-scala

一切都按预期工作。

现在我想修改程序以打印 HTTP 标头,如编码、语言、远程地址等。我想打印所有标头信息(目的是记录这些信息)

但我找不到合适的文档或示例。谁能帮我完成这件事。

4

2 回答 2

7

如果您需要提取特定的标头:

optionalHeaderValueByName("Encoding") { encodingHeader =>
  println(encodingHeader)
  complete("hello")
}

或者,您可以访问原始请求对象并直接提取标头。这是一个记录所有标题的自定义指令:

def logHeaders(): Directive0 = extract(_.request.headers).map(println)

用法

logHeaders() {
  complete("hello")
}
于 2015-09-14T15:18:21.253 回答
2

这是我如何让它工作的。

指示:

def logHeaders(innerRoute: Route): (RequestContext => Unit) = extract(_.request.headers) { headers =>
  headers.foreach(h => logger.info("header: {} = {}", h.name, h.value))
  innerRoute
}

用法:

logHeaders() {
  complete("hello")
}
于 2015-12-03T06:58:40.207 回答