如何使用 Hapi.js 创建一个简单的 CRUD 应用程序?

阅读时长 13 分钟读完

Hapi.js 是一个 Node.js 的 Web 应用框架,它提供了一组强大的工具来帮助构建 web 应用程序。在本文中,我们将了解如何使用 Hapi.js 来创建一个简单的 CRUD 应用程序。

环境搭建

确保你已经安装了 Node.js 运行环境。

首先,我们需要创建一个新的 Node.js 项目,并安装 Hapi.jsJoiBoom 依赖:

创建路由

index.js 文件中创建一个基本的服务器:

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

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

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

我们使用 connection() 方法来指定服务器的主机名和端口号,并使用 start() 方法来启动服务器。

接下来,我们需要创建一些路由来处理 CRUD 操作。

我们将使用 hapi-router 来自动加载路由文件。这样的话,当我们添加路由文件时,我们不需要手动向服务器添加它们。

首先,创建一个名为 routes.js 的文件。我们将定义所有的路由信息在这个文件中。

在这个文件中,我们需要导出一个函数,该函数接受一个 server 实例作为参数,并使用 server.route() 方法来添加路由。

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

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

  -------
--

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

上述路由信息中,我们定义了一个默认的首页路由,5个处理 RESTful API 的路由,以及一个处理 404 错误的路由。

使用 Joi 来验证路由参数和负载,使用 Boom 来处理错误信息和响应状态码。

现在,在 index.js 中添加以下代码来自动加载路由文件:

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

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

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

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

使用 HapiRouter 将自动加载 routes 目录下的所有路由文件,并将其添加到服务器上。

现在访问 http://localhost:3000/,就可以看到 "Hello, world!" 的欢迎信息了。

连接数据库

在实现 CRUD 操作之前,我们需要使用 MongoDB 数据库来存储产品数据。

安装 MongoDB

首先,需要安装和运行 MongoDB。你可以从 官方网站 下载并安装 MongoDB。

在安装成功,并启动 MongoDB 后,创建一个名为 hapi-crud-app 的数据库。

安装 MongoDB driver

安装 Node.js 的 mongodb 驱动,并将其保存到项目的依赖中:

为了让我们的应用更加健壮和可扩展,我们使用 MongoDB 的 MongoClient 来处理数据库连接。

routes.js 文件中,我们需要添加一个 MongoClient 对象来连接 MongoDB 数据库。在每个路由处理程序中,我们将使用该对象来执行 CRUD 操作。

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

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

  --- ---

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

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

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

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

测试

现在,我们已经完成了 CRUD 操作的 API,并且数据库连接已经建立。使用 Postman 或其他 HTTP 客户端测试 API 是否正确,并且与数据库交互正确即可。

结论

在本文中,我们了解了如何使用 Hapi.js 来创建一个简单的 CRUD 应用程序。我们了解了如何使用 HapiRouter 自动加载路由文件,添加路由,使用 Joi 验证路由参数和负载,并使用 MongoDB 数据库来存储数据。虽然这个应用程序比较简单,但它可以作为你使用 Hapi.js 构建更复杂的应用程序的起点。

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

纠错
反馈