Akka/Spray 中的 'context' 是什么意思

What is the meaning of the term 'context' in Akka/Spray

我是 Akka/Spray 和 Scala 的新手。我从 akka 文档中看到有 HttpRequest,它是 Http Request class,还有根据 akka docs

的 RequestContext

encapsulates the context of an HttpRequest as it flows through a akka-http Route structure.

请问这里的'context'是什么意思?

谢谢

我们来看看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 的元数据。