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

时间:2016-02-24 22:29:56

标签: http routes akka

我查看了akka http文档并了解了很多关于Directives和Routes的知识。但我还没有找到一个简单的例子,说明我如何从头文件中提取一个值(例如用户:joesmith),然后执行类似在threadlocal中设置该值的操作,然后最终链接到其余的路由。如果我的目标不明确,我很乐意提供一些代码和'insert header grab'这里的注释来说明。

提前感谢!

1 个答案:

答案 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