喷雾路线拒绝

时间:2015-04-12 18:29:33

标签: scala routes spray

我正在使用Spray构建一些自定义指令,我发现了一个问题:

当一条路线被拒绝时,我认为它立即完成了拒绝。然而,它不是,它试图完成内部路线。例如,在此代码中:

path("users") {
  post {
    entity(as[User]){
      user =>
        directive_always_reject(){
          println("Hello")
          complete(200, "Hello")
        }
    }
  }
}

"你好"即使指令被拒绝,也会一直打印。

我一直认为当一条路线被拒绝时,它不会继续进入内部路线(或至少是我理解它的方式) 我是否误解了Spray的某些内容,或者我的代码中有错误?

谢谢!

[更新1]

directive_always_reject()的实现可以是:

def directive_always_reject[T]() : Directive0 = {
  reject(
    new ValidationRejection("Some error")
  )
}

[更新2]

我看到可以将println放在complete函数中。

path("users") {
  post {
    entity(as[User]){
      user =>
        directive_always_reject(){
          complete {
            println("Hello")
            "Hello"
          }
        }
    }
  }
}

但是这个解决方案不适用于我,因为在我的真实代码中,我将RequestContext传递给另一个完成请求的actor。

0 个答案:

没有答案