游戏:阅读与表格

时间:2014-11-25 03:10:09

标签: json validation parsing playframework httprequest

我正在创建一个带有JSON格式的HTTP REST API。

Play似乎提供了两种完全独立的方式来解析和验证我的输入:

  • play.api.data.Form

  • play.api.libs.json.Reads

这些之间有什么区别,哪个更适合解析JSON请求体,还有验证和错误处理?

如果“它取决于”,它依赖于什么?

1 个答案:

答案 0 :(得分:2)

为了使用JSON正文解析请求,它一直是Reads。事实上,实际上没有办法使用Form来解析JSON,因为它并不是它的意思。 Form完全用于绑定并形成网址编码的表单(即String -> String键值对),以及它。

除此之外,它们在验证和错误处理方面实际上非常相似。我确信这是有目的的。它们都包含相同或非常相似的验证方法,例如minmaxminLengthverifying等。bindFromRequest和{{1}以这样的方式处理错误,使它们累积而不是快速失败,并且两者都有validate方法来轻松处理错误:

fold

虽然不适用于所有人,但也有JSON transformers,它提供了在绑定到对象之前和之后(或从不绑定)来操纵JSON结构的强大功能方法。

REST API与否,我倾向于尽可能多地使用JSON验证,因为它感觉比someForm.bindFromRequest.fold ( formWithErrors => ..., value => ... ) request.body.validate[A].fold ( errors => ... , value => ... ) 更不笨,并且通常更容易构成较小的Form和{{1}在一起。