scala – 喷射路由404响应
发布时间:2020-12-16 09:32:29 所属栏目:安全 来源:网络整理
导读:我有一个服务,返回一个选项[ProductDoc]在未来(作为akka问) 如何在喷涂路线上进行响应,以便有效的产品与产品重新分配,但是未知但形成良好的产品会返回404? 我想让代码填补这里的差距: get { path("products" / PathElement) { productID:String = val p
我有一个服务,返回一个选项[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 } } } } 这不可能是正确的方法来实现这一点吗?这似乎是一个非常简单的模式,必须已经被某人解决了! 解决方法
Spray已经支持您的用例:默认情况下,选项值None被编组为EmptyEntity。这可能是您在进行任何更改之前看到的:具有空文档的200。有一个指令将空白文档转换为404,rejectEmptyResponse,您可以绕过路由的某些部分来绕过您想要的行为。
然后你的路线就像这样: rejectEmptyResponse { path("products" / PathElement) { productID:String => val productFuture = // same as before complete(productFuture) } } 当然,您可以将rejectEmptyResponse放在路径中,具体取决于是否要用其包装更多的路由部分。 更多信息: > https://github.com/spray/spray/blob/master/spray-routing/src/main/scala/spray/routing/directives/MiscDirectives.scala#L117 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Scala案例类最快的序列化/反序列化
- bash – 如何将stdout stderr重定向到一个文件,同时保持流独
- AngularJs内联编辑插入html标记
- yum [Errno 14] problem making ssl connection CentOs
- scala – 如何在Spark-notebook中使用Accumulo 1.6创建Spar
- angularjs – ng-change获取新值和原始值
- 如何使用scala play将json对象添加到json数组中?
- 如何在bash脚本中根据正则表达式拆分字符串
- Free Geocoding Webservice 免费 邮编 转 经纬度 webservic
- angular单个页面加载多个ng-app