Fastify 框架中如何进行 Schema 验证?

阅读时长 7 分钟读完

在前端应用开发过程中,Schema 验证是非常重要的一个环节,它可以帮助我们在前端控制数据的类型、格式以及是否必填,从而减少数据的错误以及提高应用的稳定性和可靠性。

Fastify 是一个高效、低开销的 Web 框架,它非常适合开发高性能的应用。Fastify 框架内建了一个快速且灵活的 Schema 验证插件,使得进行数据类型校验变得特别容易。本文将介绍 Fastify 框架中如何进行 Schema 验证,希望能够为大家提供一些指导和实践经验。

安装 Fastify 和 Fastify-Swagger

首先,我们需要在本地安装 Fastify 和 Fastify-Swagger 两个插件。Fastify-Swagger 是 Fastify 的一个插件,可以在应用中自动生成 Swagger 文档,从而使得我们的应用具有更好的可读性和可维护性。

创建一个 API 接口

为了演示如何在 Fastify 中使用 Schema 验证,我们先创建一个 API 接口,该接口将接收 JSON 数据并进行校验。

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

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

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

在上述代码中,我们创建了一个 POST 接口 /api/user,当该接口接收到请求时,会输出用户提交的数据并返回一个成功的响应。

安装 Ajv 插件

Fastify 内建的 Schema 验证插件使用的是 Ajv,我们需要在本地安装 Ajv 插件。

添加 Schema 校验

现在我们可以在上面创建的 API 接口中添加 Schema 校验了。

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

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

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

我们在路由配置中添加了一个 schema 属性,该属性定义了我们需要进行校验的数据字段及其类型,以及哪些字段是必须提供的。在本例中,我们需要传入三个必选字段:nameageaddress,分别对应字符串类型、数字类型和字符串类型。如果请求的 JSON 数据符合校验规则,将会返回 status: ok 的响应。

当请求的数据不符合校验规则时,Fastify 将自动返回错误信息。例如,如果我们提交下面的 JSON 数据:

Fastify 会自动返回错误信息:

自动生成 Swagger 文档

为了更好地展现 API 接口的使用,我们可以使用 Fastify-Swagger 插件自动生成 Swagger 文档。

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

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

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

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

我们在上述代码中注册了 Fastify-Swagger 插件,配置了一个 /docs 路由前缀。在 Swagger 配置中,我们指定了 API 的基本信息、使用的 MIME 类型以及文档地址。

现在我们可以使用 Swagger UI 访问我们的 API 文档了。

总结

在本文中,我们介绍了 Fastify 框架中如何进行 Schema 验证,以及如何通过 Fastify-Swagger 插件自动生成 Swagger 文档。Schema 验证是前端应用开发中至关重要的环节,它可以帮助我们减少数据类型的错误和提高应用的稳定性和可靠性。Fastify 框架内置了 AJV 插件,方便我们进行数据类型校验,使开发变得更加容易和高效。

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

纠错
反馈