npm 包 joi2json 使用教程

阅读时长 8 分钟读完

joi2json 是一个 Node.js 下的工具库,可以将 Joi 的验证规则自动生成 JSON Schema。在编写 Node.js 服务时,经常需要用到 Joi 进行参数校验,而使用 JSON Schema 进行数据校验可以更加灵活,因此 joi2json 可以节省许多转换工作。

本文将介绍 joi2json 的安装和使用方法,并结合案例展示其应用场景。

安装

在项目根目录下执行以下命令即可安装 joi2json:

使用

joi2json 可以将 Joi 的验证规则转化为 JSON Schema,从而实现数据校验。在使用过程中,我们需要导入 joi2json 并调用其中的方法。

在 Node.js 中,使用 require 将 joi2json 引入:

joi2json 提供了两个方法:

  • convert(joiValidationObject, options)
  • convertAndLog(joiValidationObject, options)

其中 joiValidationObject 表示 Joi 的验证规则,options 表示可选项,用于配置 joi2json 的默认行为。

convert 方法

convert 方法将 Joi 的验证规则转化为 JSON Schema,并返回一个 JSON 对象。该方法的使用示例如下:

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

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

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

输出结果:

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

convertAndLog 方法

convertAndLog 方法与 convert 方法不同的是,它会打印验证规则和 JSON Schema。该方法的使用示例如下:

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

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

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

输出结果:

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

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

案例

在 Node.js 中,我们经常需要使用 Joi 对请求参数进行校验,以下是一个简单的 Express 示例:

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

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

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

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

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

该程序需要接收 POST 请求,并对请求参数进行校验。使用 joi2json 可以方便地生成 JSON Schema,见上述程序中最后一行代码。

在 Postman 中发送请求,请求体如下:

由于请求体参数缺少 password,因此将返回以下错误信息:

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

总结

Joi 是 Node.js 下的一个重要的数据校验工具,与 JSON Schema 相似,但是更为灵活。而 joi2json 工具则可以将 Joi 的验证规则自动转换为 JSON Schema,方便在使用 JSON Schema 进行数据校验时的工作。

使用 joi2json 需要注意以下几点:

  1. 请确保在验证规则中使用的是 @hapi/joi 而不是 joi。
  2. joi2json 提供了两个方法,convert 方法返回 JSON 对象,convertAndLog 则将结果打印到控制台中。
  3. 生成的 JSON Schema 需要根据实际情况进行调整,例如添加一些描述信息和类型校验等。

总之,joi2json 工具使得数据校验变得更加便捷,有助于提高 Node.js 应用的开发效率。

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

纠错
反馈