【发布时间】:2017-07-27 06:12:26
【问题描述】:
我正在用 Python 开发一个小型 RESTful Web 应用程序,并使用 JSON 作为接口。应用程序接受 JSON 数据并需要根据模式验证它们。根据请求,模式可能非常严格或灵活。此外,应用程序可能需要在以后的改进中验证用户对象。
我在堆栈溢出以及其他网站上找到了一些建议。其中包括
但找不到合适的比较。
在简单性、灵活性和可扩展性方面,您认为我应该选择哪一个?
从他们的文档和示例来看,Cerberus 似乎非常灵活且可扩展性非常好。但我不知道其他库。
编辑 1:目前,应用程序的需求非常简单,一个基本的模式验证以及添加自定义类型和自定义验证规则的范围就足够了。因此,如果所有这些库都提供基本要求,我会选择最简单易用的库。如果有其他建议,我也愿意接受。
希望能得到一些帮助。
【问题讨论】:
-
我认为需要更多信息。数据验证包太多了,我认为选择取决于它们的高级功能,而不是它们的基本模式验证功能(github.com/keleshev/schema、docs.pylonsproject.org/projects/colander/en/latest/index.html 也是有效的选择)。我经常使用 jsonschema,它非常简单。您正在寻找的究竟是什么,不仅允许您尝试其中一个具有足够好的抽象,并且在需要时可以轻松替换?
-
@nir0s 现在,基本模式验证足以添加自定义类型和验证规则(例如验证有效 url、IPv4 地址或 IPv6 地址等)。此外,验证规则可能取决于同一输入中另一个键的值,例如此模式中的 {'user': 'some user', 'sex': 'male', 'age': age},有效年龄可能会根据性别而变化)。数据结构也可以嵌套。所以如果所有的图书馆都提供这些,我可以选择最简单的。
-
这个问题在github cerberus上有一个issue thread 见: github.com/pyeve/cerberus/issues/254
标签: python jsonschema json-schema-validator cerberus voluptuous