npm 包 fluent-schema 使用教程

阅读时长 10 分钟读完

什么是 fluent-schema

fluent-schema 是一个可以帮助开发者快速且可靠地构建 JSON Schema 的工具。它不仅提供了丰富的 schema 构建器,还支持自定义和插件扩展。

fluent-schema 由 Microsoft 开源,使用 TypeScript 编写,可在 Node.js 和浏览器环境下使用。

安装 fluent-schema

安装 fluent-schema 可以采用 npm 或 yarn 直接下载:

如何使用 fluent-schema

通过 fluent-schema,我们可以使用 fluent API 定义 JSON Schema,然后使用 validate 方法验证数据是否符合定义的格式。

实例

下面的示例代码展示了如何使用 fluent-schema 验证一个 JSON 对象:

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

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

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

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

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

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

验证结果将会输出 Data is valid

fluent-schema 构建器

fluent-schema 提供了多种 schema 构建器,以下是一些流行的构建器:

.title(value: string)

为 schema 设置标题:

.description(value: string)

为 schema 添加描述:

.type(value: schemaTypes)

设置 schema 的数据类型:

.required()

设置当前属性为必填项:

.minLength(value: number)

设置字符串属性的最小长度:

.maxLength(value: number)

设置字符串属性的最大长度:

.pattern(value: RegExp)

设置字符串属性的正则表达式:

.items(value: fluentSchema)

设置数组属性中的每个项的属性:

.properties(properties: { [key: string]: fluentSchema })

设置对象属性的属性:

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

.additionalProperties(value: fluentSchema)

设置对象添加其他属性时的值:

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

.oneOf(schemas: fluentSchema[])

设置对象属性可以符合多种定义:

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

.dependencies(dependencies: { [key: string]: string[] | fluentSchema })

设置对象属性的依赖项:

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

fluent-schema 校验器

fluent-schema 除了提供 schema 构建器外,还提供了一些常用的校验器:

minimum(value: number)

设置数值属性的最小值:

maximum(value: number)

设置数值属性的最大值:

multipleOf(value: number)

设置数值属性必须是指定数字的倍数:

format(value: string)

设置属性的格式:

const(value: any)

设置属性必须等于指定值:

enum(values: any[])

设置属性必须符合指定的枚举值:

minItems(value: number)

设置数组属性的最少项数:

maxItems(value: number)

设置数组属性的最多项数:

contains(value: fluentSchema)

设置数组属性必须包含指定的子项:

自定义 fluent-schema

fluent-schema 支持自定义 schema 构建器和校验器,以下是自定义正则表达式的例子:

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

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

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

在上面的示例中,我们可以使用 addModifier 方法添加一个自定义属性 pattern 并指定正则表达式。

fluent-schema 插件

fluent-schema 还支持插件扩展,以下是一个使用插件的示例:

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

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

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

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

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

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

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

在上面的示例中,我们使用 addFluentSchemaPlugin 方法添加了一个自定义插件 ValidationPlugin 并进行数据验证。

总结

fluent-schema 是一个非常好用的 JSON Schema 工具,它提供了丰富的 schema 构建器和校验器,支持自定义和插件扩展。通过使用 fluent-schema,我们可以快速且可靠地构建 JSON Schema,并对数据进行校验。

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

纠错
反馈