Hapi 教程:创建和测试 REST API 的完整指南

阅读时长 9 分钟读完

介绍

Hapi 是一个现代化的 Node.js Web 应用框架,它强调耐久性、插件化、可配置性和可测试性。在这个教程中,我们将讲解如何使用 Hapi 创建和测试 REST API。

我们将开始介绍 Hapi 的基础知识,包括如何安装和配置框架。然后,我们将创建一个简单的 REST API,并通过示例代码和测试来了解如何使用 Hapi 进行开发。最后,我们将讨论如何使用 Hapi 插件和工具扩展和优化我们的应用程序。

安装和配置 Hapi

要使用 Hapi 开发 REST API,我们需要安装 Node.js 运行时和 npm 包管理器。在安装 Node.js 后,我们可以使用以下命令安装 Hapi:

安装完成后,我们可以在项目中导入 Hapi 模块:

接下来,我们需要创建一个 Hapi 服务器并配置它。以下是一个简单的示例代码:

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

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

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

-------

在这个示例中,我们创建了一个名为 server 的 Hapi 服务器,并使用端口和主机名进行配置。我们还创建了一个 init 函数来启动服务器。

创建 REST API

现在我们已经创建了一个 Hapi 服务器,我们可以开始创建我们的 REST API。我们将从创建路由开始,这些路由将映射我们应用程序的不同端点。以下是一个简单的示例:

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

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

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

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

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

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

-------

在这个示例中,我们创建了 / 和 /users 两个路由。/ 路由只是响应一个简单的消息,而 /users 路由返回一个包含用户数据的 JSON 对象。

测试 REST API

由于 Hapi 是一个可测试的框架,我们可以使用不同的工具和测试框架来测试我们的 REST API。在这个示例中,我们将使用 Jest 和 supertest 来测试我们的 API。

首先,我们需要将 Jest 和 supertest 添加到我们的项目中:

接下来,我们创建一个名为 server.test.js 的测试文件。以下是一个简单的示例:

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

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

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

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

在这个示例中,我们创建了两个测试用例,分别测试 / 和 /users 路由的响应。我们使用 supertest 发出请求并使用 Jest 断言响应。在测试结束时,我们关闭服务器并终止测试。

我们可以使用以下命令运行测试:

如果一切正常,我们将看到测试通过的消息。

使用 Hapi 插件和工具

Hapi 还提供了大量的插件和工具,以便我们扩展和优化我们的应用程序。以下是一些常用的插件和工具:

  • joi:一个数据验证库,可用于验证请求和响应负载。
  • hapi-auth-jwt2:一个 JWT 验证插件,可用于保护受保护的端点。
  • catbox:一个通用的缓存库,可用于缓存响应或其他数据。
  • swagger:一个 API 文档工具,可用于描述和展示我们的 API。

以下是一个示例,展示如何使用 joi 和 hapi-auth-jwt2 插件:

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

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

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

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

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

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

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

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

-------

在这个示例中,我们使用 joi 描述了一个登录端点的负载验证,并使用 hapi-auth-jwt2 插件来保护另一个端点。我们还定义了一个 validate 函数来验证 JWT。最后,我们创建了两个路由,登录和受保护的端点。在登录路由中,我们使用 JWT 库创建和签发 JWT。在受保护的路由中,我们使用 auth 选项来保护它。

结论

在这个 Hapi 教程中,我们学习了如何使用 Hapi 创建和测试 REST API。我们还了解了如何使用不同的插件和工具扩展和优化我们的应用程序。我希望这个指南能够帮助你为你的下一个项目选择合适的工具和技术。

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

纠错
反馈