当前位置: 首页 > news >正文

培训网站官网企业账号登录入口

培训网站官网,企业账号登录入口,seo专家招聘,网站后台地址修改目录 1、YMAL 2、JSON Schema 2.1、为什么要使用JSON Schema? 2.2、数据类型 2.3、给校验值进行约束: 2.3.1、最小值和最大值: 2.3.2、字符串特殊校验: 2.3.3、数组 2.3.4、对象约束 2.4.5、必需属性 2.4.6、依赖关系 1…

目录

1、YMAL

2、JSON Schema

2.1、为什么要使用JSON Schema?

2.2、数据类型

2.3、给校验值进行约束:

2.3.1、最小值和最大值:

2.3.2、字符串特殊校验:

2.3.3、数组

2.3.4、对象约束

2.4.5、必需属性

2.4.6、依赖关系


1、YMAL

YAML语言类似于XML和JSON文件,但是使用更简洁的语法。不是编程语言,主要用于存储配置信息。

配置文件:
pytest.ini-----配置一些参数 

yaml文件通常作为配置文件。可以使用yaml库来写入或者读取YAML文件

pip install PyYAML==6.0.1

读取和写入yaml文件:

import yaml
# 追加写⼊
def write_yaml(filename, data):with open(filename, encoding="utf-8", mode="a+") as f:#使用with打开文件yaml.safe_dump(data, stream=f) #使用yaml.safe_dump将数据写入文件流f#会将data转化为yaml格式的字符串并写入文件# 读取
def read_yaml(filename, key):with open(filename, encoding="utf-8", mode="r") as f:data = yaml.safe_load(f)#使用yaml.safe_load解析文本内容:将ymal格式统一转换为python字典/列表;safe_load避免了恶意加载文件的风险return data[key]#返回解析之后数据key对应的值# 清空
def clear_yaml(filename):with open(filename, encoding="utf-8", mode="w") as f:f.truncate()#调用truncate()方法清空文件内容(即使文件原本有内容,也会被清空为 0 字节)。def test_yml():#写⼊yaml⽂件data = {"str":"12345"}write_yaml('test.yml',data)#读取yaml⽂件ret = read_yaml('test.yml',"str")print("ret:", ret)#清空yaml⽂件clear_yaml('test.yml')

书写不同:

注意:YAML冒号之后都有空格

列表:列表中的每一项换行写,每行前面都要加上- 和空格,同时注意缩进。

注意:记住列表和字典格式即可!

如果有复杂的json格式怎么办?

可以使用工具进行转:(转完之后记着要检查)

https://www.jashtool.com/json/to-yaml

2、JSON Schema

2.1、为什么要使用JSON Schema?

JSON Schema⼀个⽤来定义和校验JSON的web规范,简⽽⾔之,JSON Schema是⽤来校验json是否符合预期
接口返回值校验:
1、校验关键字段的值(但是会漏掉一些重要字段/值的校验)
2、json返回值完整校验(但是万一很多要写很多)
必须要校验所有的值是固定信息的话是不现实的,接口的返回值对应的值每次可能是不同的,但是同一个接口返回的字段名一定是不变的。

因此大多数需要校验:

校验接口返回值:
1、需要返回的字段是否都存在
2、返回的值的类型是否正确

因此我们就要需要使用JSON Schema

下载:pip install jsonschema==4.23.0

json转接送schema太麻烦了,我们就可以使用现成的工具。(注意转完之后要进行检查)在线JSON转Schema工具 - ToolTT在线工具箱

检验博客列表页返回的json数据:

import requests
from jsonschema.validators import validate
def test_json():schema = { "type": "object","required": [],"properties": {"code": {"type": "string"},"errMsg": {"type": "string"},"data": {"type": "array","items": {"type": "object","required": [],"properties": {"id": {"type": "number"},"title": {"type": "string"},"content": {"type": "string"},"userId": {"type": "number"},"deleteFlag": {"type": "number"},"createTime": {"type": "string"},"updateTime": {"type": "string"},"loginUser": {"type": "boolean"}}}}}}url = "http://8.137.19.140:9090/blog/getList"header = {"user_token_header": "eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwidXNlck5hbWUiOiJ6aGFuZ3NhbiIsImV4cCI6MTc0MDczOTIzOH0.lYiI6 - fPBqIyTVItvUQRyD7OKruSXR6I5tNOEmorWw8"}r = requests.get(url=url, headers=header)validate(r.json(), schema)#通过r.json()可以打印当前的返回值信息#将返回的json和jsonschema进行匹配。  上面的jsonschema的格式可以通过复制我们的返回值,去工具里面进行转换

那么jsonschema到底要怎么写?

2.2、数据类型

integer表示整数,而number表示数字,可以是整数、浮点数。。。

当pycharm有时候缓存出现问题,导致无法出现代码补全----重建项目索引

2.3、给校验值进行约束:

2.3.1、最小值和最大值:

JSON Schema:

{"type": "object","properties": {"age": {"type": "integer","minimum": 0,"maximum": 120}}
}

2.3.2、字符串特殊校验:

pattern :使⽤正则表达式来验证字符串是否符合特定的模式。
\s:匹配所有的空白符,包括换行
\S:非空白字符,不包括换行
限定字符串长度:\S{3,}  最少匹配是3个字符,最多不受限制
\S{3,6}:最少匹配是3个字符,最多匹配6个字符

JSON Schema:

{"type": "object","properties": {"email": {"type": "string"},"username": {"type": "string","pattern": "\S+"}}
}

2.3.3、数组

"uniqueItems": True  数组的元素必须是唯一的

 "minItems": 1, 数组的最小长度

minItems 和 maxItems :指定数组的最⼩和最⼤⻓度。
uniqueItems :确保数组中的元素是唯⼀的。 数组中的元素是否可以重复
uniqueItems设置为True表示元素必须是唯一的,设置为False表示元素可以是唯一的(也可以是不唯一的)     默认情况,允许存在重复的数据。
items :定义数组中每个元素的类型和约束。   数组中元素的类型

JSON Schema:

{"type": "object","properties": {"tags": {"type": "array","items": { "type": "string" },"minItems": 1,"uniqueItems": True}}
}

2.3.4、对象约束

"additionalProperties": False 放在哪就限制的是哪个层级的字段

"minProperties": 1  最小的属性数量

minProperties maxProperties :指定对象的最⼩和最⼤属性数量。
additionalProperties :控制是否允许对象中存在未在 properties (这是JSON schema中的属性)中定义的额外属性,默认为True。(默认是允许在json返回数据里面存在未在schema中的properties中的)

JSON Schema:

{"type": "object","properties": {"name": { "type": "string" }},"minProperties": 1,"additionalProperties": False #设置为False 不允许在json返回值中出现 没有在properties中写的参数
}

注意:配置里面不要存在其他字符或者空格,会导致识别不出来当前的配置,意味着配置是失效的。

2.4.5、必需属性

通过required关键字,JSON Schema可以指定哪些属性是必须的。如果JSON属性中缺少这些必须属性,则验证失败。 如果不加的话,你没有返回也会认为是正确的。

{"type": "object","properties": {"name": { "type": "string" },"email": { "type": "string" }},"required": ["name", "email"]
}

2.4.6、依赖关系

dependentRequired可以定义属性之间的依赖关系。例如,如果某个属性存在,则必须存在另一个属性

{"type": "object","properties": {"creditCard": { "type": "string" },"billingAddress": { "type": "string" }},"dependentRequired": {"creditCard": ["billingAddress"]}
}

补充:若没有返回前者,后者字段返回不返回都可以

http://www.dtcms.com/a/455421.html

相关文章:

  • jq效果较多的网站世界工厂网app
  • php 手机网站乐陵seo公司
  • 上海网站制作机构西安复工无需核酸检测
  • 单页淘宝客网站2014年行吗一二三四视频社区5在线高清
  • 网站主页的要素郑州专业公司网站制作公司
  • 网站开发的平台企业网页设计模板图片
  • 多个网站优化怎么做恩施网站建设公司
  • 分类信息网站织梦模板用windows搭建手机网站
  • 安徽网站建设推广个人能接广告联盟吗
  • 汽车最专业的网站建设哪有网站给光头强做面
  • 思明区建设局官网站百度网址大全网址导航
  • 制作logo的网站静态网页制作总结
  • 重庆网站建设外包哪家好电商法规定企业网站必须做3年
  • 佛山北京网站建设公司wordpress使用QQ头像
  • 青岛君哲网站建设公司怎么样网络推广方式有哪几种
  • 做油漆的网站内蒙古呼和浩特市网络公司
  • 免费建站个人网站软文广告经典案例100字
  • 铁岭做网站公司信息做暧网站
  • 58网站建设58xiamen公司网站重新备案
  • 网站安全防护模板网官网
  • 河北wap网站建设中国建设项目招标网站
  • 深圳企业建站模板项目网络由箭线和节点构成
  • 做化妆品网站怎么注册一个电商平台
  • 中国城乡建中国城乡建设部网站wordpress初音主题
  • 分类目录网站做谷歌联盟南博会官方网站建设投入
  • 自适应网站好建们上海招标网站
  • 商务网站模块设计时前台基础设施建设不包括学互联网需要什么学历
  • 电子开发网站网站建设 图纸网
  • 现在的网站用什么程序做网站空间域名能不能自己续费
  • 网站内页检测线上教学网站怎么建设