我可以在完成块中修改http响应状态吗?

时间:2015-02-05 19:46:11

标签: spray

有没有办法修改完整{}块内的http状态代码?我已经定义了一个Marshaller与scalaz.concurrent.Task一起工作:

implicit def taskMarshaller[A](implicit m: Marshaller[A]) = Marshaller[scalaz.concurrent.Task[A]]{(task, ctx) => task.runAsync(_.fold(l => throw l, r => m(r, ctx))) }

我做了

complete { Task {...} }

我希望能够根据任务的结果修改repsonse中的http状态代码。

1 个答案:

答案 0 :(得分:0)

关键是对ToResponseMarshaller使用scalaz.concurrent.Task[(StatusCode, A)],如下所示:

implicit def scalazTaskWithStatusMarshaller[A](implicit m: ToResponseMarshaller[(StatusCode, A)]): ToResponseMarshaller[scalaz.concurrent.Task[(StatusCode, A)]] = ToResponseMarshaller[scalaz.concurrent.Task[(StatusCode, A)]] { (task, ctx) => task.runAsync(_.fold(l => throw l, r => m(r, ctx))) }