【问题标题】:What is the meaning of the term 'context' in Akka/SprayAkka/Spray 中的“上下文”一词是什么意思
【发布时间】:2017-10-03 09:50:32
【问题描述】:

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

封装 HttpRequest 的上下文,因为它流经一个 akka-http 路由结构。

我可以知道这里的“上下文”一词是什么意思吗?

谢谢

【问题讨论】:

    标签: scala akka spray akka-http


    【解决方案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
      // ...
    }
    

    (从代码中删除的cmets)

    所以从本质上讲,上下文为您提供了一些关于 HttpRequest 的元数据。

    【讨论】:

      猜你喜欢
      • 2011-05-07
      • 1970-01-01
      • 2018-09-03
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-23
      相关资源
      最近更新 更多