我有一项服务在未来返回 Option[ProductDoc] (作为 akka 询问)
如何在喷涂路由中响应,以便有效产品响应产品但未知但格式良好的产品返回 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
}
}
}
}
这肯定不是实现这一目标的正确方法吗?这似乎是一个非常简单的模式,一定已经有人解决了!