Scala喷洒Can:如何使用自定义服务器管道?

Scala喷洒Can:如何使用自定义服务器管道?,scala,spray,Scala,Spray,我正在启动一个带有“IO(Http)!Http.Bind(self)”的Spray-Can web服务器;Spray服务器似乎已硬编码为使用默认管道,所有管道都隐藏在IO(Http)中。我用的是Spray 1.3.0 在一些与喷雾相关的文档中有一个页面,其中甚至有一个关于“创建管道阶段”的部分(尽管看起来像) 然而,如果我创建了一个定制的管道阶段,我如何让我的喷雾罐服务器使用它呢 从代码中我可以看到,服务器被硬编码为使用默认管道——in被设置为对的静态调用,这不允许自定义标准管道设置 我的具体使

我正在启动一个带有“
IO(Http)!Http.Bind(self)
”的Spray-Can web服务器;Spray服务器似乎已硬编码为使用默认管道,所有管道都隐藏在
IO(Http)
中。我用的是Spray 1.3.0

在一些与喷雾相关的文档中有一个页面,其中甚至有一个关于“创建管道阶段”的部分(尽管看起来像)

然而,如果我创建了一个定制的管道阶段,我如何让我的喷雾罐服务器使用它呢

从代码中我可以看到,服务器被硬编码为使用默认管道——in被设置为对的静态调用,这不允许自定义标准管道设置

我的具体使用案例是,我想为一些URL启用“requestChunkAggregation”,而不是其他URL


我可以使用“猴子补丁”方法覆盖管道,即使用与代码库中的Spray内部类相同的完全限定名定义类,然后依靠链接器首先加载它们,但是,有没有一种更简单的定制Spray Can管道的方法呢?

在Spray 1.2.1中,为HTTP客户端创建管道阶段要简单得多。以下是我的团队如何使用它:

val logRequest: HttpRequest => HttpRequest = { r => log.debug(r.toString); r }

val logResponse: HttpResponse => HttpResponse = { r => log.debug(r.toString); r }

private val defaultPipeline = defaultRequest ~> logRequest ~> sendReceive ~> logResponse 

def isServerOnline: Future[Boolean] = {
  val responseFuture = defaultPipeline(Get(properties.serverOnlineUrl))
  val serverOnline = responseFuture map { response =>
    response.status == StatusCodes.OK     
  }
  serverOnline
}

“喷雾1.2.1中更简单”--与什么相比更简单?我用的是Spray 1.3.0。“我的团队是这样使用它的”——对不起,这段代码到哪里去了?请你澄清一下上下文好吗?我正在用“IO(Http)!Http.Bind(self)”启动一个web服务器;如何更改IO(Http)内部使用的管道?您提到了Spray Can并链接到1.1-M7文档,然后询问了有关Spray IO和1.3.0的问题。我被第一部分误导了,回答了错误的问题。我的例子是在服务器中使用spray can作为http客户机(服务器调用其他内部服务来处理请求)时自定义管道阶段的一种更简单的方法。我想我不了解所有涉及的不同框架。我已经澄清了这个问题,并链接到我正在使用的代码的实际版本。使用静态配置的管道显然是硬编码的。我想答案很明显是源代码中的“不”。