在前端应用开发过程中,Schema 验证是非常重要的一个环节,它可以帮助我们在前端控制数据的类型、格式以及是否必填,从而减少数据的错误以及提高应用的稳定性和可靠性。
Fastify 是一个高效、低开销的 Web 框架,它非常适合开发高性能的应用。Fastify 框架内建了一个快速且灵活的 Schema 验证插件,使得进行数据类型校验变得特别容易。本文将介绍 Fastify 框架中如何进行 Schema 验证,希望能够为大家提供一些指导和实践经验。
安装 Fastify 和 Fastify-Swagger
首先,我们需要在本地安装 Fastify 和 Fastify-Swagger 两个插件。Fastify-Swagger 是 Fastify 的一个插件,可以在应用中自动生成 Swagger 文档,从而使得我们的应用具有更好的可读性和可维护性。
npm install fastify fastify-swagger --save
创建一个 API 接口
为了演示如何在 Fastify 中使用 Schema 验证,我们先创建一个 API 接口,该接口将接收 JSON 数据并进行校验。
-- -------------------- ---- ------- ----- ------- - -------------------- ------- ---- -- ------------------------- --------- ------ -- - ----- ---- - ------------ ----------------- ------------ ------- ----- -------- ----- --- ---- ------- ------------- -- -- -------------------- ----- -------- -- - -- ----- - ------------------ --------------- - ------------------- ------- -- ------------ --
在上述代码中,我们创建了一个 POST 接口 /api/user
,当该接口接收到请求时,会输出用户提交的数据并返回一个成功的响应。
安装 Ajv 插件
Fastify 内建的 Schema 验证插件使用的是 Ajv,我们需要在本地安装 Ajv 插件。
npm i ajv --save
添加 Schema 校验
现在我们可以在上面创建的 API 接口中添加 Schema 校验了。
-- -------------------- ---- ------- ----- ------- - -------------------- ------- ---- -- ------------------------- - ------- - ----- - ----- --------- ----------- - ----- - ----- -------- -- ---- - ----- -------- -- -------- - ----- -------- - -- --------- -------- ------ ---------- - - -- --------- ------ -- - ----- ---- - ------------ ----------------- ------------ ------- ----- -------- ----- --- ---- ------- ------------- -- -- -------------------- ----- -------- -- - -- ----- - ------------------ --------------- - ------------------- ------- -- ------------ --
我们在路由配置中添加了一个 schema
属性,该属性定义了我们需要进行校验的数据字段及其类型,以及哪些字段是必须提供的。在本例中,我们需要传入三个必选字段:name
,age
和 address
,分别对应字符串类型、数字类型和字符串类型。如果请求的 JSON 数据符合校验规则,将会返回 status: ok
的响应。
当请求的数据不符合校验规则时,Fastify 将自动返回错误信息。例如,如果我们提交下面的 JSON 数据:
{ "name": "Alice", "age": "21", "address": "New York" }
Fastify 会自动返回错误信息:
{ "statusCode": 400, "error": "Bad Request", "message": "body.age should be number" }
自动生成 Swagger 文档
为了更好地展现 API 接口的使用,我们可以使用 Fastify-Swagger 插件自动生成 Swagger 文档。
-- -------------------- ---- ------- ----- ------- - -------------------- ------- ---- -- -------------------------------------------- - ------------ -------- -------- - ----- - ------ -------- --- --------------- ------------ -------- --- ---- --------- -------- ------- -- ------------- - ---- --------------------- ------------ ----- ---- ---- ----- -- --------- --------------------- --------- -------------------- -- ------------ ---- -- ------------------------- - ------- - ----- - ----- --------- ----------- - ----- - ----- -------- -- ---- - ----- -------- -- -------- - ----- -------- - -- --------- -------- ------ ---------- - - -- --------- ------ -- - ----- ---- - ------------ ----------------- ------------ ------- ----- -------- ----- --- ---- ------- ------------- -- -- -------------------- ----- -------- -- - -- ----- - ------------------ --------------- - ------------------- ------- -- ------------ --
我们在上述代码中注册了 Fastify-Swagger 插件,配置了一个 /docs
路由前缀。在 Swagger 配置中,我们指定了 API 的基本信息、使用的 MIME 类型以及文档地址。
现在我们可以使用 Swagger UI 访问我们的 API 文档了。
http://localhost:3000/docs/
总结
在本文中,我们介绍了 Fastify 框架中如何进行 Schema 验证,以及如何通过 Fastify-Swagger 插件自动生成 Swagger 文档。Schema 验证是前端应用开发中至关重要的环节,它可以帮助我们减少数据类型的错误和提高应用的稳定性和可靠性。Fastify 框架内置了 AJV 插件,方便我们进行数据类型校验,使开发变得更加容易和高效。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64787dc7968c7c53b04b96b2