Hapi on Node.js - 尝试 RESTFul API

阅读时长 11 分钟读完

简介

Hapi 是 Node.js 中一个流行的框架,用于构建 RESTFul API。它提供了许多功能,包括路由、请求处理、输入验证、错误处理、缓存、插件等。它还提供了一个简单的插件系统,使得添加和使用插件变得非常容易。

在本文中,我们将介绍如何使用 Hapi 构建一个简单的 RESTFul API,包括路由、请求处理、输入验证和错误处理。我们将使用 Node.js 和 Hapi 框架来实现这个 API。

安装

在开始之前,我们需要安装 Node.js 和 Hapi 框架。我们可以通过以下命令来安装:

基本用法

让我们从一个简单的 "Hello World" 应用程序开始,该应用程序使用 Hapi 框架来处理 HTTP 请求。我们将创建一个名为 server.js 的文件,并添加以下代码:

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

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

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

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

--------

在上面的代码中,我们首先导入 Hapi 框架,然后创建一个名为 server 的 Hapi 服务器。我们指定服务器应该监听的端口和主机。接下来,我们定义一个路由,该路由将处理 HTTP GET 请求,并返回 "Hello World!" 字符串。最后,我们启动服务器并在控制台打印服务器的 URI。

我们可以使用以下命令来启动服务器:

现在,我们可以在浏览器中访问 http://localhost:3000,应该会看到 "Hello World!" 字符串。

RESTFul API

现在我们将尝试构建一个简单的 RESTFul API,该 API 允许我们创建、读取、更新和删除用户。我们将使用以下路由:

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

获取所有用户

让我们从获取所有用户开始。我们将创建一个名为 users.js 的文件,并添加以下代码:

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

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

在上面的代码中,我们定义了一个名为 users 的数组,其中包含三个用户。我们导出一个名为 getAllUsers 的函数,该函数将处理 HTTP GET 请求,并返回 users 数组。

接下来,我们将在 server.js 文件中添加以下代码:

在上面的代码中,我们首先导入名为 users 的模块,该模块包含 getAllUsers 函数。接下来,我们定义一个路由,该路由将处理 HTTP GET 请求,并使用 users.getAllUsers 函数作为处理程序。

现在,我们可以在浏览器中访问 http://localhost:3000/users,应该会看到以下 JSON 响应:

获取特定用户

接下来,让我们尝试获取特定用户。我们将在 users.js 文件中添加以下代码:

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

在上面的代码中,我们导出一个名为 getUserById 的函数,该函数将处理 HTTP GET 请求,并返回具有指定 ID 的特定用户。我们首先从请求参数中获取 ID,然后使用 Array.find 方法查找具有指定 ID 的用户。如果找不到用户,则返回 404 错误响应。

接下来,我们将在 server.js 文件中添加以下代码:

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

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

在上面的代码中,我们定义一个名为 getUserById 的路由,该路由将处理 HTTP GET 请求,并使用 users.getUserById 函数作为处理程序。我们还在路由路径中指定了一个参数 {id},该参数将在请求参数中作为属性 params.id 出现。

现在,我们可以在浏览器中访问 http://localhost:3000/users/2,应该会看到以下 JSON 响应:

创建用户

接下来,让我们尝试创建用户。我们将在 users.js 文件中添加以下代码:

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

在上面的代码中,我们导出一个名为 createUser 的函数,该函数将处理 HTTP POST 请求,并创建一个新用户。我们首先从请求负载中获取用户名称,然后创建一个新用户对象,并将其添加到 users 数组中。最后,我们返回新用户对象,并使用 201 状态码表示创建成功。

接下来,我们将在 server.js 文件中添加以下代码:

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

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

在上面的代码中,我们定义一个名为 createUser 的路由,该路由将处理 HTTP POST 请求,并使用 users.createUser 函数作为处理程序。

现在,我们可以使用以下命令来创建一个新用户:

应该会看到以下 JSON 响应:

更新用户

接下来,让我们尝试更新用户。我们将在 users.js 文件中添加以下代码:

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

在上面的代码中,我们导出一个名为 updateUser 的函数,该函数将处理 HTTP PUT 请求,并更新具有指定 ID 的用户。我们首先从请求参数中获取 ID,然后使用 Array.find 方法查找具有指定 ID 的用户。如果找不到用户,则返回 404 错误响应。否则,我们从请求负载中获取新用户名,并更新用户对象。最后,我们返回更新后的用户对象。

接下来,我们将在 server.js 文件中添加以下代码:

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

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

在上面的代码中,我们定义一个名为 updateUser 的路由,该路由将处理 HTTP PUT 请求,并使用 users.updateUser 函数作为处理程序。我们还在路由路径中指定了一个参数 {id},该参数将在请求参数中作为属性 params.id 出现。

现在,我们可以使用以下命令来更新用户:

应该会看到以下 JSON 响应:

删除用户

最后,让我们尝试删除用户。我们将在 users.js 文件中添加以下代码:

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

在上面的代码中,我们导出一个名为 deleteUser 的函数,该函数将处理 HTTP DELETE 请求,并删除具有指定 ID 的用户。我们首先从请求参数中获取 ID,然后使用 Array.findIndex 方法查找具有指定 ID 的用户。如果找不到用户,则返回 404 错误响应。否则,我们从 users 数组中删除用户,并使用 204 状态码表示删除成功。

接下来,我们将在 server.js 文件中添加以下代码:

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

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

在上面的代码中,我们定义一个名为 deleteUser 的路由,该路由将处理 HTTP DELETE 请求,并使用 users.deleteUser 函数作为处理程序。我们还在路由路径中指定了一个参数 {id},该参数将在请求参数中作为属性 params.id 出现。

现在,我们可以使用以下命令来删除用户:

应该会看到以下空响应:

结论

在本文中,我们介绍了如何使用 Hapi 框架构建一个简单的 RESTFul API,包括路由、请求处理、输入验证和错误处理。我们还提供了示例代码,以帮助您开始构建自己的 API。希望这篇文章对您有所帮助,谢谢阅读!

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

纠错
反馈