Hapi 中封装 API 之 Joi 模块使用详解

前言

在前端开发中,我们经常需要校验用户输入的数据是否符合要求。为了提高开发效率,我们可以使用一些现成的工具来完成这个任务。而 Joi 就是一个非常优秀的校验库,它可以帮助我们快速、方便地完成数据校验。在本文中,我们将介绍如何在 Hapi 中封装 API,并使用 Joi 完成数据校验。

Hapi 中封装 API

在实际开发中,我们经常需要编写一些 API 接口来处理数据的 CRUD 操作。为了提高代码的复用性和可维护性,我们可以将这些 API 接口进行封装。在 Hapi 中,我们可以使用路由来实现这个功能。具体的做法是:将每个 API 接口封装成一个路由,并将这些路由注册到 Hapi 的服务器上。下面是一个简单的示例:

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

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

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

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

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

上面的代码中,我们定义了四个路由,分别对应了获取用户列表、创建用户、更新用户和删除用户这四个 API 接口。这些路由都被注册到了 Hapi 的服务器上,并在启动服务器时生效。

使用 Joi 完成数据校验

在实际开发中,我们经常需要对用户输入的数据进行校验,以确保数据的合法性。而 Joi 就是一个非常优秀的校验库,它可以帮助我们快速、方便地完成数据校验。下面是一个使用 Joi 完成数据校验的示例:

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

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

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

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

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

上面的代码中,我们定义了一个 Joi 的 schema,它包含了对用户输入数据的校验规则。在示例中,我们定义了六个校验规则,分别对应了用户名、密码、重复密码、访问令牌、出生年份和邮箱。其中,用户名必须为字母和数字的组合,长度在 3 到 30 之间;密码必须为字母和数字的组合,长度在 3 到 30 之间;重复密码必须与密码相同;访问令牌可以是字符串或数字;出生年份必须为整数,且在 1900 到 2013 之间;邮箱必须符合邮箱的格式。最后,我们将一个数据对象传入了 schema 的 validate 方法中,该方法会返回一个包含校验结果的对象。

在 Hapi 中使用 Joi

在 Hapi 中,我们可以使用 Joi 来完成对用户输入数据的校验。具体的做法是:在路由的配置中使用 validate 选项,并将 Joi 的 schema 传入该选项。下面是一个使用 Joi 完成数据校验的示例:

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

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

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

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

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

在上面的示例中,我们将一个包含了校验规则的 Joi 的 schema 传入了 validate 选项中,并指定了该校验规则应该应用到 payload 中。在实际的开发中,我们可以根据需要选择将校验规则应用到 query、params、headers 或者 payload 中。

总结

在本文中,我们介绍了在 Hapi 中封装 API 的做法,并使用 Joi 完成了对用户输入数据的校验。Joi 是一个非常优秀的校验库,它可以帮助我们快速、方便地完成数据校验。在实际的开发中,我们可以根据需要选择将校验规则应用到 query、params、headers 或者 payload 中,以确保数据的合法性。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65d873fe1886fbafa462bc8a