如何使用 spray RestAPI 从服务器端获取 http 请求 header 信息
How to get http request header info from the server side with spray RestAPI
我是 Scala 和 Spray 的新手。我根据本博客post中给出的说明编写了一个简单的RESTAPI。
http://www.smartjava.org/content/first-steps-rest-spray-and-scala
一切都按预期工作。
现在我想修改程序来打印 HTTP header 编码,语言,remote-address 等。我想打印所有 header 信息(目的是记录这些信息)
但我找不到合适的文档或示例。谁能帮我完成这个。
如果需要提取特定的header:
optionalHeaderValueByName("Encoding") { encodingHeader =>
println(encodingHeader)
complete("hello")
}
或者您可以访问原始请求 object 并直接提取 header。这是记录所有 header 的自定义指令:
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")
}
我是 Scala 和 Spray 的新手。我根据本博客post中给出的说明编写了一个简单的RESTAPI。 http://www.smartjava.org/content/first-steps-rest-spray-and-scala
一切都按预期工作。
现在我想修改程序来打印 HTTP header 编码,语言,remote-address 等。我想打印所有 header 信息(目的是记录这些信息)
但我找不到合适的文档或示例。谁能帮我完成这个。
如果需要提取特定的header:
optionalHeaderValueByName("Encoding") { encodingHeader =>
println(encodingHeader)
complete("hello")
}
或者您可以访问原始请求 object 并直接提取 header。这是记录所有 header 的自定义指令:
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")
}