【问题标题】:Python - Cerberus, jsonschema, voluptous - Which one will be appropriate? [closed]Python - Cerberus、jsonschema、voluptous - 哪一个合适? [关闭]
【发布时间】:2017-07-27 06:12:26
【问题描述】:

我正在用 Python 开发一个小型 RESTful Web 应用程序,并使用 JSON 作为接口。应用程序接受 JSON 数据并需要根据模式验证它们。根据请求,模式可能非常严格或灵活。此外,应用程序可能需要在以后的改进中验证用户对象。

我在堆栈溢出以及其他网站上找到了一些建议。其中包括

但找不到合适的比较。

在简单性、灵活性和可扩展性方面,您认为我应该选择哪一个?

从他们的文档和示例来看,Cerberus 似乎非常灵活且可扩展性非常好。但我不知道其他库。

编辑 1:目前,应用程序的需求非常简单,一个基本的模式验证以及添加自定义类型和自定义验证规则的范围就足够了。因此,如果所有这些库都提供基本要求,我会选择最简单易用的库。如果有其他建议,我也愿意接受。

希望能得到一些帮助。

【问题讨论】:

  • 我认为需要更多信息。数据验证包太多了,我认为选择取决于它们的高级功能,而不是它们的基本模式验证功能(github.com/keleshev/schemadocs.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


【解决方案1】:

如果只是因为它出色的文档,我会选择 Cerberus。它允许根据某些条件(http://docs.python-cerberus.org/en/stable/validation-rules.html#dependencies)设置依赖关系,并且对于您所指的 jsonschema、voluptuous 等基本模式验证需求当然很简单。

还支持嵌套字段(在我熟悉的所有库中),它们的自定义文档非常棒:http://docs.python-cerberus.org/en/stable/customize.html

话虽如此,我并不是基于使用所有三个提议的包,而是基于广泛使用 jsonschema 并阅读足够的关于其他两个的文档和建议。

【讨论】:

  • 是的,对我来说,cerberus 文档也很棒,它们满足了我的所有需求。看起来像现在和这个一起去。感谢您抽出宝贵时间回答问题。
  • 每个包都有自己的优势,例如 voluptuous 不允许额外的字段(如果你不明确允许的话)
猜你喜欢
  • 2011-11-25
  • 1970-01-01
  • 2011-02-06
  • 2011-04-17
  • 1970-01-01
  • 2015-06-28
  • 2011-10-22
  • 1970-01-01
相关资源
最近更新 更多