Scala 使用akka路由dsl获取http头

Scala 使用akka路由dsl获取http头,scala,akka,akka-http,Scala,Akka,Akka Http,我是Scala的新手,这个问题让我很沮丧。如何从请求中获取所有标题 val route = { path("lol") { //get httpHeaders complete(HttpResponse()) } } 您在此处至少有两个选项: a) 使用extractRequest指令: val route = { path("example") { extractRequest { request => request.headers

我是Scala的新手,这个问题让我很沮丧。如何从请求中获取所有标题

val route =  {
  path("lol") {
    //get httpHeaders
    complete(HttpResponse())
  }
}

您在此处至少有两个选项:

a) 使用
extractRequest
指令:

val route = {
  path("example") {
    extractRequest { request =>
      request.headers // Returns `Seq[HttpHeader]`; do anything you want here
      complete(HttpResponse())
    }
  }
}
b) 显式访问
RequestContext

val route =  {
  path("example") { ctx =>
    ctx.request.headers // Returns `Seq[HttpHeader]`; do anything you want here
    ctx.complete(...)
  }
}

还有一系列与标题相关的指令,如
headerValueByName
optionalHeaderValueByName
。您可以找到详细信息。

指令
extractRequest
可能是不必手动定义路由就可以获取标题的最直接的方法。@RüdigerKlaehn:谢谢!我已经扩展了我的答案;)Imho应该有
path(){get{ctx=>}
才能编译为什么Seq而不是Map?