关于如何使用akka http编写简单过滤器的教程或指南?

关于如何使用akka http编写简单过滤器的教程或指南?,http,routes,akka,Http,Routes,Akka,我查阅了akka http文档,了解了很多关于指令和路由的知识。但是,我还没有找到一个简单的例子来说明如何从标头(比如user:joesmith)中提取一个值,然后在threadlocal中设置该值,最后链接到我的其余路由。如果我的目标不明确,我很乐意在这里提供一些代码和“insertheadergrab”注释来说明 提前谢谢 事实证明这非常容易。HeaderValue ByName是成功的关键。下面是一个hello world akka http,它获取“用户”头并在响应中显示它: impor

我查阅了akka http文档,了解了很多关于指令和路由的知识。但是,我还没有找到一个简单的例子来说明如何从标头(比如user:joesmith)中提取一个值,然后在threadlocal中设置该值,最后链接到我的其余路由。如果我的目标不明确,我很乐意在这里提供一些代码和“insertheadergrab”注释来说明


提前谢谢

事实证明这非常容易。HeaderValue ByName是成功的关键。下面是一个hello world akka http,它获取“用户”头并在响应中显示它:

import akka.actor.ActorSystem
import akka.http.scaladsl.Http
import akka.http.scaladsl.model.HttpResponse
import akka.http.scaladsl.model.StatusCodes._
import akka.http.scaladsl.server.Directives._
import akka.stream.ActorMaterializer


object JunkServer {

  implicit val actorSystem = ActorSystem("junk-server")
  implicit val materializer = ActorMaterializer()

  val route =
    headerValueByName("User") { userId =>
      path("") {
    complete(
      HttpResponse(
        OK,
        entity = s"hello there: ${userId}")
    )
      }
  }



  def main(args: Array[String]) {
    Http().bindAndHandle(route, "localhost", 9999)
  }
}
当您要测试它时:

curl-H“User:dracula”本地主机:9999

服务器响应应为:

hello there: dracula

我想我快要弄明白了。。。我可能会使用headerValueByName[我在一些旧的spray文档中找到了它…希望在akka http中也有类似的东西。]如果我提出了一个解决方案,我会发布一个解决方案。