如何使用 Hapi 和 Boom 实现 RESTful API 的错误处理

RESTful API 经常会被开发者用来构建前端应用,因为它可以提供简单、可伸缩的接口,但是当出现错误时,必须要有很好的错误处理机制。在本文中,我们将学习如何使用 Hapi 和 Boom 库来实现 RESTful API 的错误处理。

Hapi

Hapi 是一个十分流行的 Node.js Web 应用框架,它提供了一个灵活、稳定的基础设施,以便开发者可以专注于构建高效、可扩展的 Web 应用。Hapi 使用插件化设计,所以它的操作系统可以根据需要大大扩展。Hapi 尤其适用于创建 RESTful API,这也是我们本文主要介绍的内容。

我们使用 Hapi 来创建 RESTful API 的步骤很简单,首先安装 Hapi:

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

然后在项目中引入 Hapi:

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

接下来,我们使用 Hapi 创建 RESTful API。

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

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

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

在这个例子中,我们创建了一个简单的 RESTful API,当我们访问 localhost:3000/hello 时,会获得一个字符串 Hello World!

Boom

Boom 是一个 Node.js 模块,它提供了一组方法,可以方便地创建 HTTP 响应,尤其适用于处理错误。当你在 Hapi 中遇到错误时,它会使用 Boom 来发送 HTTP 响应。错误响应包括状态码、错误消息和一些其他附加信息,所有这些信息都可以通过 Boom 在 Node.js 中方便地设置和调用。

我们使用 Boom 创建错误响应十分简单。比如,我们想要返回一个 404 错误,当请求 localhost:3000/user 时:

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

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

现在,当我们访问 localhost:3000/user 时,我们将看到一个包含错误状态码和消息的 HTTP 响应。

自定义错误处理

除了预制的错误响应之外,我们还可以自定义错误消息和响应代码。比如,如果你在内存中处理一个请求时遇到错误,你可以使用 Boom.badRequest() 来返回一个 400 错误:

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

在这个例子中,如果请求没有提供一个有效的 ID,我们将返回一个自定义的错误消息 Id parameter is required 以及一个自定义的状态码 400。

综合实例

下面是一个综合实例,我们创建一个 API,可以添加、删除和更新用户信息,同时使用 Boom 处理 HTTP 错误:

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

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

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

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

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

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

在这个例子中,我们首先创建了一个空的 users 数组,然后定义了三个路由:

  • POST /user:接收一个 payload 中的用户对象,如果没有提供名称或 ID,就返回一个自定义的 400 错误;
  • PUT /user/{id}:接收一个 ID 参数和一个 payload 中的用户对象,如果用户不存在或没有提供名称或 ID,就返回一个自定义的 404 错误或 400 错误;
  • DELETE /user/{id}:接收一个 ID 参数,如果用户不存在,就返回一个自定义的 404 错误。

结论

在本文中,我们学习了如何使用 Hapi 和 Boom 实现 RESTful API 的错误处理。使用 Boom,我们可以轻松地创建常见的错误响应,使我们的 API 更加强大和健壮。希望你能够从本文中学到一些实用的技巧,并开始构建更具强大和鲁棒性的 RESTful API。

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