跳转到主要内容

JSON RX模式验证工具

项目描述

什么是Rx?

当向您的网络服务添加API时,您必须选择如何编码您要发送的数据。XML是这一选择中的一种常见选择,但它可以很快变得晦涩和繁琐。许多webservice作者想避免思考XML,而是选择提供一些简单数据类型,这些类型与现代编程语言中的常见数据结构相对应的格式。换句话说,JSON和YAML。

不幸的是,虽然这些格式使传递复杂数据结构变得容易,但它们缺乏一种验证系统。XML有XML模式和RELAX NG,但这些都是复杂和有时令人困惑的标准。它们不太适合JSON提供的数据结构,如果您想避免XML作为数据编码,那么为第一个XML编写更多的XML可能更不受欢迎。

Rx旨在提供一个与JSON风格数据结构匹配且与JSON本身一样易于使用的数据验证系统。

rxjson

rxjson是一个Python包,帮助您直接在您的Python应用程序中对生成的JSON与标准json模式进行验证。

它是http://rx.codesimply.com/的包装版本

Travis-ci: continuous integration status.

用法

以下是一个如何验证您的JSON与rx模式的小例子

import requests
from rxjson import Rx
import unittest

class SporeTest(unittest.TestCase):
    """Test generate spore schema."""
    def test_spore(self):
        rx = Rx.Factory({ "register_core_types": True })
        with open('spore_validation.rx') as f:
            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))

甚至更快

>>> import json
>>> from rxjson import Rx
>>> 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

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

rxjson-0.3.zip (9.7 kB 查看哈希值)

上传时间

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面