npm 包 @hapi/validate 使用教程

阅读时长 5 分钟读完

@hapi/validate 是一个基于 Joi 的输入数据验证库,它为 JavaScript/Node.js 开发者提供了一种简便、可靠的方式来验证用户输入、请求数据等等。该库支持各种数据类型、自定义规则以及可选异步验证,非常适合用于前端开发中。

安装

@hapi/validate 包是通过 npm 发布的,可以使用 yarn 或 npm 安装:

使用

为了使用 @hapi/validate,我们需要先定义一个 schema 对象来指定输入数据的格式和验证规则。可以通过调用 validate() 方法来对输入数据进行验证。例如,以下是一个最基本的使用示例:

-- -------------------- ---- -------
----- --- - ---------------
----- -------- - --------------------------

----- ------ - -------------------
    --------- ------------------------
    --------- --------------------------------------------------
---

---------- --------- ---------- --------- -------- -- ------- ----- ------ -- -
    -- ----- -
        -------------------
    - ---- -
        -------------------
    -
---

在上面的示例中,我们通过 Joi.object() 定义了一个包含了 usernamepassword 两个字段的对象 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

纠错
反馈