我正在python中开发一个小型RESTful Web应用程序,并使用JSON作为接口.应用程序接受JSON数据,需要根据模式验证它们.根据请求,模式可能非常严格或灵活.此外,应用程序可能需要在稍后的改进中验证用户对象.
我在堆栈溢出以及其他网站上找到了一些建议.那些包括
但找不到合适的比较.
在简单性,灵活性和扩展能力方面,您认为我应该选择哪一个?
Cerberus似乎非常灵活,扩展能力从他们的文档和示例中看起来非常好.但我不知道其他图书馆.
编辑1:目前,应用程序的需求非常简单,基本的模式验证以及添加自定义类型和自定义验证规则的范围就足够了.因此,如果所有这些库都提供了基本要求,我会选择最简单的库.如果有的话,我也愿意接受其他建议.
希望能找到一些帮助.
我正在尝试使用丰富的来验证来自HTTP请求的JSON输入.但是,它似乎没有很好地处理unicode字符串.
from voluptuous import Schema, Required
from pprint import pprint
schema = Schema({
Required('name'): str,
Required('www'): str,
})
data = {
'name': 'Foo',
'www': u'http://www.foo.com',
}
pprint(data)
schema(data)
Run Code Online (Sandbox Code Playgroud)
上面的代码生成以下错误:
voluptuous.MultipleInvalid: expected str for dictionary value @ data['www']
Run Code Online (Sandbox Code Playgroud)
但是,如果我u
从URL中删除表示法,一切正常.这是一个错误还是我做错了?
PS.我正在使用python 2.7,如果它与它有任何关系.
有没有办法用妖娆来定义条件规则?
这是我的架构:
from voluptuous import Schema, All, Any
schema = Schema({
'resolution': All(str, Any('1920x1080', '1280x720')),
'bitrate': 20,
})
Run Code Online (Sandbox Code Playgroud)
没关系,但现在我想根据分辨率值验证比特率值.如果我有1920x1080
分辨率,那么我需要保证比特率是这些值之一:20,16,12,8; 当它的1280x720
时候比特率应该是以下之一:10,8,6,4.
我怎样才能做到这一点?有项目的github页面的信息,但我找不到我的情况.
python ×3
voluptuous ×3
cerberus ×1
jsonschema ×1
python-2.7 ×1
string ×1
unicode ×1
validation ×1