什么是 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