我已經返回一個選項[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