Joi是什么?
官方文档描述是:joi lets you describe your data using a simple, intuitive, and readable language.
简单理解就是:可以简单直接描述你的数据模型的语言。
所以重点是描述,然后校验很简单。
官方文档地址:joi.dev/api/?v=17.4…
安装
在项目目录里执行 npm i joi
试用环境
@google-cloud/functions-framework
简单试用
对一个字符串型参数进行校验
代码如下:
1 | vbnet复制代码const Joi = require('joi'); |
效果如下:
访问 http://localhost:8080/
返回 Hello, World
访问 http://localhost:8080/?username=aaaa
返回 Hello, World
访问 http://localhost:8080/?username=aa
返回
1 | swift复制代码{ |
访问 http://localhost:8080/?username=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
返回
1 | swift复制代码{ |
访问 http://localhost:8080/?username=aaaa&password=1234
返回
1 | swift复制代码{ |
对body进行校验
增加必填校验
代码:
1 | scss复制代码const Joi = require('joi'); |
用postman访问http://localhost:8080
输入数据:
1 | json复制代码{ |
返回:
1 | json复制代码{ |
输入数据:
1 | json复制代码{ |
返回:
1 | swift复制代码{ |
输入数据:
1 | json复制代码{ |
返回:
1 | css复制代码{ |
校验两个参数是否都输入
和required是有差别的
代码:
1 | scss复制代码const Joi = require('joi'); |
输入数据:
1 | ini复制代码http://localhost:8080/?username=aaaaaaa&password=123456 |
返回:
1 | json复制代码{ |
输入数据:
1 | ini复制代码http://localhost:8080/?username=aaaaaaa&mobile=123456 |
返回:
1 | swift复制代码{ |
输入:http://localhost:8080/?mobile=123456
返回:
1 | json复制代码{ |
二选一及伴随
代码
1 | scss复制代码const Joi = require('joi'); |
输入:http://localhost:8080/?mobile=123456789&password=654321
输出:
1 | json复制代码{ |
输入:http://localhost:8080/?mobile=123456
输出:
1 | swift复制代码{ |
输入:http://localhost:8080/?username=abcdfe&password=654321
输出:
1 | json复制代码{ |
输入:http://localhost:8080/?username=abcdfe&password=654321&mobile=13999999999
输出:
1 | swift复制代码{ |
其他常用功能
直接验证某个变量或者值:Joi.attempt(‘x’, Joi.number());
允许对象里含有未定义的key:Joi.object({ a: Joi.any() }).unknown();
定义参数不能同时出现:
1 | css复制代码const schema = Joi.object({ |
本文转载自: 掘金