@hapi/validate 是一个基于 Joi 的输入数据验证库,它为 JavaScript/Node.js 开发者提供了一种简便、可靠的方式来验证用户输入、请求数据等等。该库支持各种数据类型、自定义规则以及可选异步验证,非常适合用于前端开发中。
安装
@hapi/validate 包是通过 npm 发布的,可以使用 yarn 或 npm 安装:
// 使用 yarn yarn add @hapi/validate // 使用 npm npm install @hapi/validate
使用
为了使用 @hapi/validate,我们需要先定义一个 schema 对象来指定输入数据的格式和验证规则。可以通过调用 validate()
方法来对输入数据进行验证。例如,以下是一个最基本的使用示例:
-- -------------------- ---- ------- ----- --- - --------------- ----- -------- - -------------------------- ----- ------ - ------------------- --------- ------------------------ --------- -------------------------------------------------- --- ---------- --------- ---------- --------- -------- -- ------- ----- ------ -- - -- ----- - ------------------- - ---- - ------------------- - ---
在上面的示例中,我们通过 Joi.object()
定义了一个包含了 username
和 password
两个字段的对象 schema,并为它们各自定义了一些验证规则。然后,我们调用了 validate()
方法并传入所要验证的输入对象、schema 对象以及一个回调函数,在回调函数中可以获取到验证结果。
如果输入数据无效,则 validate()
方法会返回一个 error 对象,其中包括了具体的错误信息。如果输入数据有效,则会返回由 Joi
返回的数据本身。
自定义验证规则
除了支持各种内置的验证规则以外,@hapi/validate 还支持自定义验证规则,使得我们可以指定完全符合我们业务需求的数据验证方式。
以下是一个自定义验证规则的例子:
-- -------------------- ---- ------- ----- --- - --------------- ----- -------- - -------------------------- ----- --------------- - ------- -------- -- - -- ------ --- ------ - ------ ----------------- -------------- ---- ---- --- - ------ ------ -- ----- ------ - ------------------- ------------ ------------------------------------- --- ---------- ------------ ----- -- ------- ----- ------ -- - -- ----- - ------------------- - ---- - ------------------- - ---
在这个例子中,我们先定义了一个名为 customValidator
的函数,用来验证自定义字段的合法性。该函数接受一个待验证的值 value
和一个 helpers
对象,后者提供了一些辅助函数,例如 message()
用于生成自定义错误信息。在函数内部,我们判断 value
是否等于 'abc',如果不是则返回一个自定义错误信息;否则返回 value
本身。
然后,我们在 Joi.string().custom()
中使用该函数来定义一个自定义验证规则。最后,调用 validate()
方法来验证一个包含了自定义字段的对象。
可选异步验证
@hapi/validate 还支持异步验证规则,使得我们可以对输入数据进行复杂的业务逻辑处理,并在需要时返回异步结果。
以下是一个异步验证规则的例子:
-- -------------------- ---- ------- ----- --- - --------------- ----- -------- - -------------------------- ----- -------------- - ----- ------- -------- -- - ----- ------ - ----- ------------------- -- ------- --- -- - ------ ----------------- -------------- ----- -- --- - ------ ------ -- ----- ------ - ------------------- ----------- ------------------------------------ --- ---------- ----------- ----- -- ------- ----- ------ -- - -- ----- - ------------------- - ---- - ------------------- - ---
在这个例子中,我们定义了一个异步函数 asyncValidator
来验证字段。函数内部我们可以进行任何异步操作,例如调用其他 API 接口或等待某个事件触发等等。当需要返回异步结果时,我们可以直接使用 await
并返回一个值或抛出一个错误信息即可。
由于该验证规则是异步的,我们需要使用 async/await
或者 .then()
来获取验证结果。
结语
@hapi/validate 是一个非常强大的输入数据验证库,它通过简洁的 API 和优秀的设计帮助我们快速进行输入数据的验证和处理,从而提高了项目的质量和开发效率。如果你还没有使用过它,那么我强烈建议你在下个项目中试试它!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5f72b97aa9b7065299ccbbbe