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第三方库


热门话题
JavaSpringMVC控制器测试打印结果JSON字符串   若catch语句返回,那个么为什么它最终会阻塞呢?   java Grails中servletContext在哪里可用?   java Jhipster:如何为现有项目启用多种语言   java异常评估SpringEL表达式:“#fields.hasErrors('something')”   java如何验证SeleniumWebDriver中的文本颜色?   java在绘图时使用JPanel坐标   java如何初始化spring启动到project?   java如何通过JDBC的PreparedStatement将UUID数组插入HyperSQL数据库   java修改JVM以跨线程序列化文件访问   Javascript到Java正则表达式   使用Java运行时调用aspell程序时出现字符集问题。getRuntime()。执行官   执行RDP时的java Sukuli按钮识别   java如何使用okhttp更改connect请求的标头   java无法创建Maven Eclipse项目