joi是nodej的一个工具模块,主要用于JavaScript对象的校验。它是一种简单易用的javacript对象约束描述语言,可以轻松解决nodejs开发中的各种参数的校验。
详细资料见 https://github.com/hapijs/joi/tree/v10.5.0
1. nodejs引入:
|
|
2. 开时使用:
|
|
上面的例子定义了一个schema,包含的意思如下:
- username
Joi.String() – 定义类型必须是字符串类型
.alphanum() – 定义必须包含字母或数字
.min(3).max(30) – 定义字段长度3-30
.required() – 定义必修字段
.with(‘username’,’birthyear’) – 校验对象字段必须和birthyear同时存在
- password
.regex(/^[a-zA-Z0-9{3-30}$/) – 定义字段必须匹配正则规则。
.without(‘password’,’access_token’) – 校验对象中,’password’与’access_token’不同是存在
- access_token
.[Joi.string(),Joi.number()] – 定义字段类型为数字类型或字符串类型
没有.required()约束 – 定义字段为可选字段
- birthyear
.Joi.number().integer() – 定义字段为数字整型
.min(1900).max(1994) – 定义字段值范围在1900-1994
.email() – 定义字段为邮箱地址
23. 用法:
使用分两步完成 第一步使用joi提供的类型与约束定义一个schema
注意:joi schema对象是不可变,这意味着每增加一条规则(e.g. .min(5))将会返回一个新的schema对象。
第二步 通过定义的schema完成值的校验
如果输入的值校验有效,则err===null 否则将会返回错误对象
schema可以使用普通的JavaScript对象,其中对象的字段关联joi类型来定义。也可以直接使用一个joi类型定义
|
|
如果schema是直接使用joi类型定义 ,则可以直接使用schema.validate(value,callback)验证。如果是一个非joi类型对象的定义的shema ,实质joi模块会转换成object() 类型,等同如下:
joi模块的字符串编码默认为utf-8