使用 Hapi.js & Sequelize 创建 API CRUD

阅读时长 9 分钟读完

在 Web 开发中,API (Application Programming Interface) 是不可或缺的一部分。开发人员需要创建 API 来允许客户端应用程序与服务器通信,并共享数据和其他资源。在本文中,我们将介绍如何使用 Hapi.js 和 Sequelize 来创建一个完整的 API CRUD。

Hapi.js 简介

Hapi.js 是一个基于 Node.js 的 Web 框架,其目标是使 Web 开发更容易,更快速,更可靠。Hapi.js 提供了许多内置的功能和插件,使开发人员可以快速构建和扩展 Web 应用程序。

Sequelize 简介

Sequelize 是一个流行的 Node.js ORM (Object-Relational Mapping) 库,它允许我们在 Node.js 应用程序中使用关系型数据库。Sequelize 提供了一种简单而强大的方法来执行 CRUD 操作。

环境配置

在开始创建我们的 API 之前,我们需要安装并配置 Hapi.js 和 Sequelize。首先,我们需要创建一个新的 Node.js 项目,然后使用 npm 安装 Hapi.js 和 Sequelize:

在项目根目录下创建一个名为 config.js 的配置文件,此文件中我们可以指定数据库连接以及其他 Sequelize 配置。例如:

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

创建数据库模型

在使用 Sequelize 创建 API 之前,我们需要先定义数据库表的模型。在本教程中,我们将创建一个 users 表,其中包含用户的基本信息,例如姓名,电子邮件地址和密码。

在项目的根目录下创建 models 目录,并在其中创建 user.js 模型文件。如下所示:

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

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

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

在这里,我们定义了一个名为 User 的模型,并指定了每个属性的类型,验证规则和其他选项。需要注意的是,我们通过 sequelize.define 方法来定义模型。

创建 Hapi.js 应用程序

接下来,我们需要创建 Hapi.js 应用程序,并在其中定义路由。在本示例中,我们定义了以下路由以处理 CRUD 操作:

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

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

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

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

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

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

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

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

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

-------

在这里,我们使用 server.route() 方法来定义每个路由。在每个路由中,我们使用 Sequelize 方法来操作数据库。如果任何操作失败,我们使用 @hapi/boom 插件来抛出适当的HTTP错误。

测试 API

现在我们完成了 API 的开发。接下来,我们可以使用 Postman 或类似的工具来测试 API。在这里,我们可以使用以下请求来测试 API:

  • GET /users - 获取所有用户
  • GET /users/{id} - 获取具有指定 ID 的用户
  • POST /users - 创建新用户
  • PUT /users/{id} - 更新具有指定 ID 的用户
  • DELETE /users/{id} - 删除具有指定 ID 的用户

结论

在本文中,我们学习了如何使用 Hapi.js 和 Sequelize 构建整个 API CRUD。使用这些工具,我们可以快速构建和扩展 Web 应用程序,并与数据库交互。希望本文能够提供适当的指导,帮助您在您的下一个项目中创建 API。

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

纠错
反馈