在Web开发过程中,数据校验是非常重要的一部分。针对表单提交或者API接口请求的数据验证有很多开源工具可以使用。body-validator是其中的一个好用的npm包,它支持多种数据类型的校验和自定义验证规则。这篇文章将详细讲述如何使用这个npm包并提供示例代码。
安装
使用npm安装body-validator:
npm install --save body-validator
基本使用方式
这里我们以Express框架为例,通过body-parser中间件解析请求体并使用body-validator进行数据验证。
首先在路由中引入body-parser和body-validator:
const express = require('express'); const app = express(); const bodyParser = require('body-parser'); const validator = require('body-validator'); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json());
接着我们定义一个用户信息提交请求的路由,请求体中包含name、email、age三个参数,使用body-validator进行校验:
-- -------------------- ---- ------- ----------------- ----- ---- ----- -- - ------------------- - ----- - ----- --------- --------- ---- -- ------ - ----- -------- --------- ---- -- ---- - ----- --------- ---- -- - -- -------- -- - -------------------- ------------ -- ------------- -- - ----------------------------- --- ---
在这里我们定义了三个校验规则,name和email字段都是必须的,而age字段是可选的,但是如果提供了age字段,则必须大于等于18。当校验规则不满足时,会返回错误信息。
详解验证规则
body-validator支持丰富的数据类型验证方式,可以通过以下属性进行定义:
- type: 指定字段的数据类型,必填。支持的值有string、number、boolean、array、object、email、url、date、regex等。
- required: 指定字段是否必填,选填。默认值为false,如果为true则表示这个字段是必填的,如果没有提供则会返回错误信息。
- enum: 指定字段值的枚举范围,选填。如果指定了该属性,则会校验字段的值是否在这个数组范围内。
- min、max: 指定字段值的最小或最大值,选填。只有type为number或date时有效。
- length: 指定字段值的长度,选填。只有type为string或array时有效,如果提供了min或max属性,则length属性将自动忽略。
- pattern: 指定字段值的正则表达式,选填。只有type为string时有效。
- format: 指定字段值的自定义校验函数,选填。该函数将接受字段值作为参数并返回布尔值,表示校验结果。
这里举一个更加详细的例子:
-- -------------------- ---- ------- ------------------- - ----- - ----- --------- --------- ----- ------- - ---- -- ---- -- -- -------- ----------- -- ------ - ----- -------- --------- ----- ------- ----- -- ------------------------------ -- ---- - ----- --------- ---- --- ---- --- -- -------- - ----- -------- ------- - ---- - - -- -------- - ----- --------- ------- - --------- - ----- --------- --------- ---- -- ----- - ----- --------- --------- ---- -- ------- - ----- -------- - - - --
在这里我们定义了一个包含五个字段的校验规则,分别是name、email、age、hobbies和address。其中name字段必须为3~20个字母组成(全是字母、不分大小写),email字段必须是合法的example.com邮箱地址,age字段必须大于等于18且小于等于100,hobbies字段必须是长度不超过5的数组,address字段必须为一个包含省份、城市和街道的对象。
自定义校验规则
除了内置的数据类型验证规则外,我们还可以通过format属性自定义校验函数。该函数接收一个参数,即要验证的字段值,返回一个布尔值,表示验证结果,例如:
-- -------------------- ---- ------- ----- --------- - -------------------------- -- ----------- ----------------------------- ----- -- ----- - --- -- --------------- ----------- ---- -- -- - ---- - ----- --------- --------- ---- - --
在这里我们定义了一个名为positive的校验规则,它验证数字是否为正数。使用方法和内置的验证规则一样,只需要在校验规则中加入positive属性即可。
总结
body-validator是一个非常好用的数据校验工具,可以帮助我们快速进行数据验证。本文介绍了它的基本用法和常用的验证规则,并提供了详细的示例代码。希望读者们能够掌握这个工具,并在实际开发中灵活运用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600557ae81e8991b448d4b4f