【发布时间】: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
我是 Akka/Spray 和 Scala 的新手。我从akka docs看到有HttpRequest,它是Http Request类,还有根据akka docs的RequestContext
封装 HttpRequest 的上下文,因为它流经一个 akka-http 路由结构。
我可以知道这里的“上下文”一词是什么意思吗?
谢谢
【问题讨论】:
标签: scala akka spray akka-http
我们来看看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 的元数据。
【讨论】: