我已经返回一个选项[ProductDoc]在未来的服务(作为阿卡问)喷雾路由404响应
怎样在喷洒路由响应,这样一个有效的产品repsonds与产品,但未知但是格式良好的人会返回404吗?
我想要的代码填写在这里的差距:
get {
path("products"/PathElement) { productID:String =>
val productFuture = (productService ? ProductService.Get(productID)).mapTo[Option[ProductDoc]]
// THE CODE THAT GOES HERE SO THAT
// IF PRODUCT.ISDEFINED RETURN PRODUCT ELSE REJECT
}
}
我可以得到工作的唯一方法是使用这个可憎
get {
path(PathElement) { productID:String =>
val productFuture = (productService ? ProductService.Get(productID)).mapTo[Option[ProductDoc]]
provide(productFuture).unwrapFuture.hflatMap {
case x => provide(x)
} { hResponse:shapeless.::[Option[ProductDoc], HNil] =>
hResponse.head match {
case Some(product) => complete(product)
case None => reject
}
}
}
}
这不可能是正确的方法为了实现这一点,当然?这似乎是一个非常简单的模式,必须已经由某人解决!
这是否意味着我的承诺必须在我的逻辑或dao层出现错误时返回成功,但返回空响应? – 2013-04-09 09:02:06
我不完全明白你想达到什么。这个话题是关于'Future [Option [T]]'的。使用上面的结构,你可以返回'Success(Some(x))'作为常规响应,'Success(None)'返回404,'Failure(x)'返回错误响应。你在问什么?如果您有更具体的问题,请在喷雾用户邮件列表中询问。 – jrudolph 2013-04-09 14:48:16
这听起来不对我喷出真的是支持这个用例。关于来自例如200个空的响应怎么样?删除命令?它会变成404吗? – dividebyzero 2015-06-13 19:11:55