我可以修改完成块中的 http 响应状态吗?
Can I modify http response status in completion block?
有没有办法修改完整的 {} 块内的 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 {...}
}
我希望能够根据任务的结果修改响应中的 http 状态代码。
关键是对 scalaz.concurrent.Task[(StatusCode, A)]
使用 ToResponseMarshaller
,如下所示:
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)))
}
有没有办法修改完整的 {} 块内的 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 {...}
}
我希望能够根据任务的结果修改响应中的 http 状态代码。
关键是对 scalaz.concurrent.Task[(StatusCode, A)]
使用 ToResponseMarshaller
,如下所示:
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)))
}