Express.js 中 Joi 验证的使用教程

阅读时长 6 分钟读完

Express.js 中 Joi 验证的使用教程

在前端开发中,数据的验证是一个非常重要的部分。在 Node.js 平台中,Joi 是一个强大的验证库,它可以用来验证表单输入的数据、API 参数等等。

在本文中,我们将介绍在 Express.js 中如何使用 Joi 进行数据的验证。

安装 Joi

在使用 Joi 进行数据验证前,我们首先需要安装它。在终端中运行以下命令:

基本用法

假设我们有一个注册表单,其中包含了用户的姓名、邮箱和密码。我们需要对这些输入值进行验证。

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

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

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

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

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

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

在上面的代码中,我们首先引入了 Joi 模块,然后定义了一个 schema 对象。在 schema 对象中,我们定义了三个属性,分别表示了 name、email 和 password。这些属性的验证规则使用了 Joi 中的方法。

在 data 对象中,我们定义了三个属性值。这些属性值需要与 schema 对象中的规则进行匹配。

最后,在调用 schema.validate() 方法时,会将数据对象传递给 Joi,Joi 将会对其进行验证。如果验证通过,则会输出包含所有属性值的对象。否则,将会返回错误信息。

高级用法

在实际开发中,我们往往需要更加复杂的验证规则。

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

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

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

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

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

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

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

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

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

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

在上面的代码中,我们定义了一个包含更复杂验证规则的 schema 对象。在这个 schema 对象中,我们使用了更多的 Joi 验证方法,比如 .alphanum().min().max().integer().valid().with().xor() 等等。这些方法可以将好多不同的验证规则组合在一起。

Joi 还包含了其它的一些验证方法,比如 .when().forbidden().strip() 等等。

实例:使用 Joi 验证 API 参数

接下来,我们将使用 Joi 验证 Express.js 中的一个 GET API 的参数。

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

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

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

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

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

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

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

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

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

在上面的代码中,我们定义了一个 GET API,用于接收两个参数:q 和 limit。我们使用了 Joi 验证库,对这两个参数进行了验证。

在调用 schema.validate() 方法时,可以指定一个对象来进行验证。在这个例子中,我们将 req.query 对象作为参数传递给了 schema.validate() 方法。这个对象包含了请求 URL 中的查询参数。例如,对于 URL /search?q=hello&limit=20,那么 req.query 对象就会包含 { q: 'hello', limit: '20' }

如果验证失败,则会返回一个带有错误信息的响应。如果验证成功,则会返回一个包含请求参数的对象的响应。在这个例子中,我们将请求参数和 limit 合并,然后将其返回给客户端。

结论

在本文中,我们学习了如何在 Express.js 项目中使用 Joi 进行数据验证。我们看到了它的基本用法和高级用法,并且使用了一个实例向您展示了如何在 API 中进行数据验证。使用 Joi,您可以轻松地验证表单输入的数据、API 参数等等。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67039fdfd91dce0dc84bc531

纠错
反馈