深入探索Scalatra:JSON处理与文件交换实战
1. 处理JSON
1.1 可选提取与Scalaz的 \/ 类型进行JSON验证
可以将可选提取与Scalaz的 \/ 类型结合,实现简单的验证。以下是示例代码:
trait MyJsonScalazRoutes extends ScalatraBase with JacksonJsonSupport {
override def renderPipeline: RenderPipeline = ({
case \/-(r) => r
case -\/(l) => l
}: RenderPipeline) orElse super.renderPipeline
post("/foods_alt") {
for {
label <- (parsedBody \ "label").extractOpt[String] \/> BadRequest()
fairTrade <- (parsedBody \ "fairTrade").extractOpt[Boolean] \/> BadRequest()
tags <- (parsedBody \ "tags").extractOpt[List[String]] \/> BadRequest()
} yield Ok((label, fairTrade, tags))
}
}
此代码处理 \/ 作为返回值,通过扩展Scalatra的渲染管道并从容器中提取
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



