Chai-Json-schema 详解

阅读时长 6 分钟读完

引言

在现如今的前端开发中,数据校验是非常重要的一个环节,而且随着应用场景的复杂化,校验的需求越来越多。传统的校验方式往往会造成重复劳动,而且代码量也会变得越来越多,所以我们需要找到更好的解决方案。

在这种情况下,一种新的校验工具 Chai-Json-schema 诞生了。

Chai-Json-schema 简介

Chai-Json-schema 是一个基于 Chai 和 json-scheme 库的插件,它能够使开发者非常方便地对 JSON 格式进行校验。

它能够帮助我们完成数组、字符串、数字等基础数据类型的校验,也可以帮助我们完成嵌套 JSON 和一些自定义的数据类型的校验。

Chai-Json-schema 不仅能够简化我们的校验过程,还能让我们更好的明确数据的结构,从而帮助我们更好的开发和维护代码。

安装

首先,我们需要在项目中安装 Chai 和 json-scheme 的库。

然后我们需要在代码里导入这个库:

使用

假设我们需要对下面的 JSON 进行校验:

-- -------------------- ---- -------
----- ---- - -
  ----- -----
  ---- ---
  ------ --------------------
  -------- -
    --------- -----
    ----- -----
    -------- --------
  --
  -------- ------
-
展开代码

现在我们需要校验 user 这个 JSON 是否符合下面的规则:

  • name 为字符串,长度在 2 到 20 之间
  • age 为数字,且大于 0 小于 100
  • email 是一个字符串,符合邮箱格式
  • address 是一个嵌套的 JSON,包含 province、city 和 address 三个属性,分别为字符串类型
  • hobbies 是一个字符串数组,包含了 “游泳” 这个元素

我们可以使用 Chai-Json-schema 提供的两种方法进行校验:

expect(value).to.be.jsonSchema(schema)

value 表示要校验的 JSON,schema 表示校验规则,可以有以下几种类型:

  • 一个 JSON schema 对象(已经定义好的)
  • 一个 Joi 对象(需要使用 joi-to-json-schema 库将其转换为 JSON schema 对象)
  • 一个字符串,表示 JSON schema 的 URL,Chai-Json-schema 会通过网络获取这个 schema 文件以进行校验。

那么我们可以编写下面的代码:

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

---------- -------- --- ---- -------- -- -- -
  ------------------------------------------
---
展开代码

在这个测试用例中,我们使用 expect(user).to.be.jsonSchema(userSchema) 的语法对 user 进行了校验,最终我们对错误的输出为:

我们成功的解决了上述的问题。通过这种方式,我们可以清晰的定义 JSON 的规则,并且很方便地进行校验。

expect(value).to.have.jsonSchema(schema)

此方法是专门用来校验 JSON 的属性是否符合规则。

还是使用 user 对象为例,我们现在想校验 user 的 hobbies 属性是否符合定义。我们可以在这里定义一个 hobbiesSchema 对象:

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

---------- -------- --- ------- -- --- ---- -------- -- -- -
  -----------------------------------------------
---
展开代码

可以看到,Chai-Json-schema 使得我们能够非常方便的进行校验。

小结

在本篇文章中,我们通过对 Chai-Json-schema 库的介绍和实际使用,了解了这个库的基本功能和使用方法。

通过使用 Chai-Json-schema,开发者可以更快地完成数据校验工作,并且可以很方便地明确 JSON 的结构,从而帮助我们更好地开发和维护代码。

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

纠错
反馈

纠错反馈