Fastify 是一款快速、低开销并支持异步执行的 Node.js Web 框架,其主要特点是快速、安全、易于学习和使用。其内置了优秀的参数校验模块 fastify-schema,使得在 Fastify 中进行参数校验变得异常简单和方便。
Fastify 参数校验模块 fastify-schema
Fastify 的参数校验模块使用的是 fast-json-stringify 和 ajv 库。其中 fast-json-stringify 是一款非常快速、高效的 JSON 序列化模块,而 ajv 则是一款严格的 JSON Schema 校验工具。
值得一提的是,Fastify 还支持为每个请求和响应添加 JSON Schema。这样做可以强制执行同意格式的输入和输出,以确保 API 架构的一致性。
Fastify 参数校验示例
-- -------------------- ---- ------- ----- ------- - -------------------- ------- ---- -- -------------------- - ------- - ----- - ----- --------- --------- ----- ----- ----------- - -- - ----- -------- -- -- - ----- -------- - - - - -- --------- ------ -- - ----- - -- - - - ------------ ------------ ---- - - - -- -- -------------------- ----- -------- -- - -- ----- - ---------------------- --------------- - ------------------- --------- -- ------------ --
假设我们向服务端发送了以下请求:
{ "a": 1.5, "b": "2.5" }
服务端将会返回以下结果:
{ "statusCode": 400, "error": "Bad Request", "message": "body.b should be number" }
这是因为我们在定义校验规则时,规定了请求体必须是一个包含 a 和 b 属性的对象,并且这两个属性的类型必须为数字。
Fastify 参数校验规则
Fastify 中可以使用的校验规则主要有以下几种:
type
校验类型,可以是 string、number、boolean、object、array 等数据类型。
required
是否必须,可以是 true 或 false。如果设置为 true,则代表该属性必须存在。
default
如果该属性不存在,则可以采用默认值进行填充。
enum
枚举值,可以指定该属性的可选值。
minimum / maximum
最小值和最大值,可以限制属性的取值范围。
format
格式,可以指定属性值的格式,支持 email、date、time、url 等多种格式。
pattern
正则表达式,可以匹配属性值。
minLength / maxLength
字符串类型属性的最小长度和最大长度。
minItems / maxItems
数组类型属性的元素数量最小值和最大值。
Fastify 参数校验总结
Fastify 提供了快速、方便的参数校验模块,在开发过程中可以有效减少代码量和调试时间,提高开发效率。希望本文能够帮助大家深入了解 Fastify 中的参数校验细节,加深对其使用的理解,从而更好地开发出更高质量的应用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64f3c249f6b2d6eab3d091cf