我查看了akka http文档并了解了很多关于Directives和Routes的知识。但我还没有找到一个简单的例子,说明我如何从头文件中提取一个值(例如用户:joesmith),然后执行类似在threadlocal中设置该值的操作,然后最终链接到其余的路由。如果我的目标不明确,我很乐意提供一些代码和'insert header grab'这里的注释来说明。
提前感谢!
答案 0 :(得分:0)
事实证明这非常容易。 headerValueByName是成功的关键。下面是一个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)
}
}
当你想测试它时:
卷曲-H"用户:吸血鬼"本地主机:9999服务器响应应该是:
hello there: dracula