术语' context'是什么意思?在Akka / Spray

时间:2017-05-05 03:32:04

标签: scala akka spray akka-http

我是Akka / Spray和Scala的新手。我从akka docs看到有HttpRequest是Http Request类,还有RequestContext,根据akka docs

  

在HttpRequest流经a时封装它的上下文   akka-http路由结构。

我是否知道术语“上下文”的含义是什么?这里吗?

由于

1 个答案:

答案 0 :(得分:1)

让我们看一下如何定义akka-http Route类型:

type Route = scala.Function1[akka.http.scaladsl.server.RequestContext, scala.concurrent.Future[akka.http.scaladsl.server.RouteResult]]

正如我们所看到的,Route本质上是一个将RequestContext转换为Future[RouteResult]的函数,因此您可以将RequestContext视为代表HttpRequest的数据的一部分以及一些其他信息

事实上,深入研究akka.http.scaladsl.server.RequestContext我们会发现一个特征:

trait RequestContext {
  val request: HttpRequest
  val unmatchedPath: Uri.Path
  implicit def executionContext: ExecutionContextExecutor
  implicit def materializer: Materializer
  def log: LoggingAdapter
  def settings: RoutingSettings
  def parserSettings: ParserSettings
  def reconfigure(
    executionContext: ExecutionContextExecutor = executionContext,
    materializer:     Materializer             = materializer,
    log:              LoggingAdapter           = log,
    settings:         RoutingSettings          = settings): RequestContext
  // ...
}

(从代码中删除了评论)

因此,基本上上下文为您提供了有关HttpRequest的一些元数据。