一、需要注意的几点
- properties :很多属性不需要约束,就没必要写在properties里
- 尽量使代码可复用:
// 例如这段代码,很多的属性可能都是最小长度为1的字符串,我们可以把这段代码复用
{
"type":"string",
"minLength":1
}
// 例如这样
const stringTemplate = {
"type":"string",
"minLength":1
}
export default {
'type': 'object',
'required': [
'tableName',
'desc',
],
'properties': {
'tableName': stringTemplate
'desc': stringTemplate
}
}
二、常用的Schema检验
- 请输入邮箱前缀,多个接口人用英文;号隔开
'pre-emails': {
'type': 'string',
'minLength': 1,
'pattern': '^(([0-9a-zA-Z_-]+[;]?){1,9})(([0-9a-zA-Z_-]+){0,1})$',
}
- 请输入邮箱前缀,多个接口人用英文,号隔开
'pre-emails': {
'type': 'string',
'minLength': 1,
'pattern': '^(([0-9a-zA-Z_-]+[,]?){1,9})(([0-9a-zA-Z_-]+){0,1})$',
}
- 支持字母,数字、下划线的组合,不支持汉字和特殊字符
'name': {
'type': 'string',
'minLength': 1,
'pattern': '^\w+$',
}
- 只匹配英文字符,至少一个
'name': {
'type': 'string',
'minLength': 1,
'pattern': '^[A-Za-z]+$',
}
- 只匹配以英文小写开头,可包含数字字母下划线
'name': {
'type': 'string',
'minLength': 1,
'pattern': '^[a-z]+\w?$',
}
- 只匹配以英文小写开头,可包含数字字母下划线,长度在8-16位之间
'name': {
'type': 'string',
'minLength': 1,
'pattern': '^[a-z]{1}\w{7,15}$',
}
- 匹配路径,例如“/v/sd/mola”,“/v2/wsd/scx” (匹配以/开头的字符串)
'name': {
'type': 'string',
'minLength': 1,
'pattern': '^[/]{1}.+$',
}
- 仅匹配中文字符(1-16个字)
'regionChineseName': {
'type': 'string',
'pattern': '^[\u4e00-\u9fa5]+$',
'minLength': 1,
'maxLength': 16,
},
- 匹配手机号
// 涵盖了以13、14、15、16、17、18、19开头的手机号校验(仅供参考,不对请指正)
"phone":{
type:"number",
pattern: "^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$"
}
- string中的format方法校验:
// 如何使用 == 简单粗暴效率高
"uri":{
type:"string",
format:"uri"
}
未完待续 ···