npm 包 joi2json 使用教程

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


猜你喜欢

  • npm 包 @logicroom/nib-core 使用教程

    在前端开发中,我们经常需要使用一些常用的工具和函数库,其中 npm 包就是最常用的之一。@logicroom/nib-core 是一个 npm 包,它提供了一些常用的 JavaScript 函数和工具...

    4 年前
  • npm 包 @chaimfn/gimatria 使用教程

    什么是 @chaimfn/gimatria @chaimfn/gimatria 是一款 npm 包,用于将希伯来文转换成数字。在犹太教中,数字对于单词和句子的意义有着深刻的影响。

    4 年前
  • npm 包 vii-sdk 使用教程

    简介 vii-sdk 是一个基于 Vue.js 开发的前端组件库,提供了一系列通用的 UI 组件和交互组件。使用 vii-sdk 可以大大提高前端开发效率,减少重复开发的工作量。

    4 年前
  • npm 包 @mmasri/rc-select 使用教程

    前言 rc-select 是一个基于 React 的优秀选择器组件,拥有丰富的功能和灵活的配置,如可搜索选择、分组选择、多选、标签、远程数据加载等等,所以 rc-select 在许多项目中使用得非常广...

    4 年前
  • npm 包 taws 使用教程

    在前端开发中,我们常常需要使用各种各样的 npm 包来帮助我们实现一些功能。今天我们要介绍的是一个非常实用的 npm 包——taws。 什么是 taws Taws 是一款基于 AWS S3 的上传工具...

    4 年前
  • npm 包 el-data-table 使用教程

    前言 el-data-table 是一个方便且易于使用的 Vue.js 表格组件库,它提供了诸多功能,如数据过滤、排序、分页、可定制的表头样式等等。在前端开发中,经常需要使用表格来展示数据。

    4 年前
  • npm 包 a-extractor 使用教程

    简介 在前端开发过程中,我们经常需要从给定的 HTML 文档/字符串中提取特定的信息,如元素的 class、id、文本内容等。此时,一个好用的 node.js 工具 —— a-extractor 就显...

    4 年前
  • npm 包 gulp-miniprogram-path-alias 使用教程

    在小程序开发过程中,我们常常需要引入很多的组件和页面,对于一些较大的项目来说,文件的引用方式就显得非常麻烦和不便捷。此时,可以使用 gulp-miniprogram-path-alias 插件进行路径...

    4 年前
  • npm 包 ebatis 使用教程

    ebatis 是一个基于 Node.js 平台的 ORM 框架,旨在让前端开发者快速、简单地通过 JavaScript 接口访问数据库,并提供完备的 SQL 代码生成和多种数据库的支持。

    4 年前
  • npm 包 quasar-cli 使用教程

    在前端领域,开发框架和库是不断涌现的。而 quasar-cli 是一个基于 Vue.js 的高质量 UI 组件库,提供了类似于 Material Design 的组件和样式,同时也可以对 Web、iO...

    4 年前
  • npm 包 capslock 使用教程

    在前端开发的过程中,我们经常需要对文本进行大小写的转化,比如把所有字母转化成大写或小写。为了提高效率,我们可以使用 npm 包来进行相应的操作。其中一个比较常用的包就是 capslock。

    4 年前
  • npm 包 vue-ads-layout 使用教程

    前言 随着 Web 技术的不断发展,前端开发越来越受到重视。作为一名前端开发者,我们需要不断学习新技术来提高我们的工作效率和代码质量。在前端开发过程中,经常需要使用到 UI 组件来构建页面。

    4 年前
  • npm 包 vue-cli-plugin-ads-packages 使用教程

    为了方便开发者使用广告组件,近年来,许多npm包已经出现,其中 vue-cli-plugin-ads-packages 是一个用于Vue.js项目的广告组件的npm包。

    4 年前
  • npm 包 scratchplugin 使用教程

    Scratch 是一款由 MIT 开发的编程教育平台,它的核心是一个基于图形化编程语言的编程界面,许多小学生和初中生都非常喜欢使用它来学习编程。而它的可扩展性也非常强,使用 npm 包 scratch...

    4 年前
  • npm包swagger2server使用教程

    前言 随着前端开发的快速发展,一个Web项目通常涉及到多个功能和模块,而这些API接口的管理、文档整理等工作需要耗费大量的时间和精力。Swagger2Server是一个基于Node.js的npm包,可...

    4 年前
  • npm 包 vue-cli-plugin-ads-readme 使用教程

    前言 随着前端技术的飞速发展和应用的普及,如何提高开发效率、降低开发成本,成为了前端开发者最迫切的需求之一。而 npm 包的使用,可以大大简化前端开发工作,提高开发效率。

    4 年前
  • npm 包 react-native-common-animations 使用教程

    简介 在React Native开发中,我们经常需要使用动画,以提升用户体验和增加交互性。但在动画的细节和各种复杂情况中,我们需要考虑到很多事情。React Native common animati...

    4 年前
  • npm 包 allen-gulu 使用教程

    简介 allen-gulu 是一个前端常用组件库,包含了一系列常用组件和工具函数。本文将介绍如何使用 allen-gulu。 安装 使用 allen-gulu 需要先安装它。

    4 年前
  • npm 包 @calvinscofield/qwebchannel 使用教程

    在开发前端应用时,我们时常会遇到如何与后端进行通信的问题。而 @calvinscofield/qwebchannel 正是一款解决这类问题的 npm 包。本文将为大家详细介绍 @calvinscofi...

    4 年前
  • npm包generator-optinoud使用教程

    简介 在前端开发过程中,我们经常会用到各种npm包来扩展我们的开发效率,其中非常实用的一个包就是generator-optinoud。该npm包可以快速生成前端项目的基础代码架构,包括目录结构、配置文...

    4 年前

相关推荐

    暂无文章