Fastify 验证器:快速构建数据验证 API

阅读时长 6 分钟读完

Fastify 是一个快速、低开销和体积小的 Node.js Web 框架。它强调了快速和低开销,并提供了许多优化性能的特性,如异步编程,只需安装所需的插件等。

Fastify 验证器是用于数据验证的插件。数据验证是将数据与预定义的规则进行比较并确保数据符合规则的过程。此插件提供了一个快速且易于使用的方法,通过编写少量代码实现保护 API 免受恶意数据的攻击。

快速上手

首先,让我们在项目中安装 fastify 和 fastify-validator 包。

接下来,创建一个名为 index.js 的文件,并添加如下代码:

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

在这个例子中,我们导入了 fastify 和 schema,并创建了一个 POST 请求处理程序,通过检查请求 body 中 name 和 age 的需要类型,分别是字符串和数字,进行验证。如果数据不符合要求,Fastify 验证器会立即将错误消息发送回客户端。这是一个相当简单的例子,但是 Fastify 验证器非常灵活,并且支持许多不同的验证操作。

验证类型

Fastify 验证器支持从字符串和数字到引用类型和自定义类型的各种数据类型。类型验证通常基于 JSON schema 的类型,但更多的信息可以在 Fastify 验证器的文档中找到。

下面我们来看一个例子:

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

上面的代码中定义了一个具有多个属性和引用类型的校验方案。我们检查 name 和 age,address 中包含很多信息,以及 phoneNumbers,它是一个数组,其中包含类型和号码对。如果在请求中缺少任何必需属性或属性类型不正确,Fastify 验证器将不会允许请求通过,并返回一个错误。

自定义校验函数

Fastify 验证器还支持自定义校验函数,以便在 API 的特定字段上执行自定义验证操作。这些自定义函数必须在 JSON 校验方案中的属性中定义。

下面是一个自定义函数的例子:

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

在上面的例子中,我们定义了一个验证方案,其中包含一个自定义 errorMessage。在这个自定义错误消息中,我们指定了 password 和 confirmPassword 字段是必须的,并添加了一个额外的“passwordsNotMatch”错误消息。在 API 请求体中调用这些字段并检查密码是否匹配。如果密码不匹配,我们发送一个自定义错误消息,否则我们将返回一个成功消息。

总结

Fastify 验证器插件是一个强大而灵活的工具,可以帮助您构建安全的 API,保护客户免受恶意数据攻击。无论是哪种类型的验证操作,Fastify 验证器都允许您快速轻松地执行。希望本文对您有所帮助。如果您正在使用 Fastify 验证器,或者想进一步了解有关 Fastify 的更多信息,请查看 Fastify 的文档中心。

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

纠错
反馈