joi2json 是一个 Node.js 下的工具库,可以将 Joi 的验证规则自动生成 JSON Schema。在编写 Node.js 服务时,经常需要用到 Joi 进行参数校验,而使用 JSON Schema 进行数据校验可以更加灵活,因此 joi2json 可以节省许多转换工作。
本文将介绍 joi2json 的安装和使用方法,并结合案例展示其应用场景。
安装
在项目根目录下执行以下命令即可安装 joi2json:
npm install joi2json
使用
joi2json 可以将 Joi 的验证规则转化为 JSON Schema,从而实现数据校验。在使用过程中,我们需要导入 joi2json 并调用其中的方法。
在 Node.js 中,使用 require 将 joi2json 引入:
const joi2json = 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 中发送请求,请求体如下:
{ "username": "John", "email": "john@gmail.com" }
由于请求体参数缺少 password,因此将返回以下错误信息:
-- -------------------- ---- ------- - - ---------- ------------- -- ---------- ------- - ---------- -- ------- --------------- ---------- - -------- ----------- ------ ---------- - - -
总结
Joi 是 Node.js 下的一个重要的数据校验工具,与 JSON Schema 相似,但是更为灵活。而 joi2json 工具则可以将 Joi 的验证规则自动转换为 JSON Schema,方便在使用 JSON Schema 进行数据校验时的工作。
使用 joi2json 需要注意以下几点:
- 请确保在验证规则中使用的是 @hapi/joi 而不是 joi。
- joi2json 提供了两个方法,
convert
方法返回 JSON 对象,convertAndLog
则将结果打印到控制台中。 - 生成的 JSON Schema 需要根据实际情况进行调整,例如添加一些描述信息和类型校验等。
总之,joi2json 工具使得数据校验变得更加便捷,有助于提高 Node.js 应用的开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60067355890c4f7277583acc