json rx架构验证工具

rxjson的Python项目详细描述


什么是RX?

将api添加到web服务时,必须选择如何对 你通过线路发送的数据。XML是一种常见的选择,但是它可以 变得神秘和笨重相当快。许多webservice作者希望 避免考虑XML,而是选择提供一些简单 与现代程序设计中常用数据结构相对应的数据类型 语言。换句话说,json和yaml。

不幸的是,虽然这些格式使传递复杂数据变得容易 结构,它们缺乏验证系统。xml有xml模式,并且放松 但这些标准很复杂,有时会让人困惑。他们不是 可以移植到json提供的数据结构中,如果您需要的话 为了避免将xml作为数据编码,编写更多的xml来验证第一个xml是 可能更不吸引人。

rx旨在提供一个与 json风格的数据结构和json本身一样容易使用。

rxjson

rxjson是一个python包,它帮助您验证生成的json 直接在python应用程序中使用标准化json模式。

它是http://rx.codesimply.com/

的打包版本 Travis-ci: continuous integration status.

用法

下面是一个如何根据rx模式验证json的小例子:

importrequestsfromrxjsonimportRximportunittestclassSporeTest(unittest.TestCase):"""Test generate spore schema."""deftest_spore(self):rx=Rx.Factory({"register_core_types":True})withopen('spore_validation.rx')asf:spore_json_schema=json.loads(f.read())spore_schema=rx.make_schema(spore_json_schema)resp=requests.get('http://localhost:8000/spore',headers={'Content-Type':'application/json'})self.assertTrue(spore_schema.check(resp.json))

或者更快:

>>>importjson>>>fromrxjsonimportRx>>>rx=Rx.Factory({"register_core_types":True})>>>spore_json_schema=json.loads(open('spore_validation.rx').read())>>>spore_schema=rx.make_schema(spore_json_schema)>>>js=json.loads("""{
...     "base_url": "http://localhost:8000",
...     "expected_status": [200],
...     "version": "0.1",
...     "methods": {
...         "put_data_item": {
...             "path": "/data/:model_name/:data_item_id",
...             "description": "Update a data item.",
...             "required_params": ["model_name", "data_item_id"],
...             "method": "PUT",
...             "formats": ["json"]
...         }
...     },
...     "name": "daybed"
... }""")>>>spore_schema.check(js)True

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何克服带有空值的不可空bean级验证   “此行有多个标记”的authenticateUser上的java MySQLConnection错误   java处理Jackson异常   java Netbeans编辑器如何知道文件在撤消后不会被修改?   目标C相当于Java的ArrayList   java当需要int时,可以将short传递给方法调用吗?   drawString()方法上的java MouseListener   java服务器socket是执行此操作的最佳选项   java需要单个匹配bean,但找到了2:org。springframework。网状物servlet。mvc。方法注释。RequestMappingHandlerMapping   如何在Java中执行Windows命令?   安卓应用程序的java文件主机   java将所有spring引导属性都设置在内。将yml文件转换为系统属性   Java邮件中的html内联链接在邮件客户端中不起作用   Java二进制文件的bazel版本控制   java如何在自定义ListView中使用Intent   java(Spring MVC+Hibernate 4+Test 4)自动连线DAO返回NULL   java一次add()调用可以在Solr服务器中索引多少文档?   java如何获取Avro GenericRecord大小