如何在 Hapi 中使用 Boom 处理错误

阅读时长 5 分钟读完

Hapi 是一个 Node.js Web 应用框架,Boom 是 Hapi 中用来处理 HTTP 错误的插件。在开发中,我们经常需要处理请求时遇到的错误,如何使用 Boom 让错误处理变得更加方便和简单呢?

安装 Boom

在开始使用 Boom 之前,需要先安装 Boom。

基本用法

Boom 通常在路由处理函数中被使用。下面是一个简单的例子:

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

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

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

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

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

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

在这个例子中,如果请求 /test 中包含了不合法的查询参数,就会返回一个 HTTP 400 Bad Request 错误。使用 Boom.badRequest 方法可以创建一个包含错误信息的 Boom 对象并将其传递给响应。

除了 Boom.badRequest,Boom 还提供了许多其他方法用于创建不同类型的错误:

  • Boom.notFound 用于创建 404 Not Found 错误
  • Boom.forbidden 用于创建 403 Forbidden 错误
  • Boom.unauthorized 用于创建 401 Unauthorized 错误
  • Boom.rangeNotSatisfiable 用于创建 416 Range Not Satisfiable 错误

更多 Boom 创建错误的相关方法可以参考官方文档。

自定义 Boom 对象

由于 Boom 对象只是一个普通的 JavaScript 对象,因此可以自定义一个 Boom 对象来满足项目的需要。在自定义 Boom 对象时,需要遵循以下规则:

  • Boom 对象必须包含 isBoom 属性,它的值为 true。
  • Boom 对象必须包含 message 属性,它的值为字符串类型。
  • Boom 对象必须包含 output 属性,它的值是一个包含 HTTP 响应信息的对象。

下面是一个自定义 Boom 对象的例子:

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

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

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

在这个例子中,自定义了一个包含未授权信息的 Boom 对象,并将其传入 Boom.create() 方法中。这种方式可以让我们根据项目的需要对 Boom 错误进行更多的自定义以满足我们的要求。

拓展 Boom 对象

在实际项目中,我们通常需要对 Boom 对象进行更复杂的扩展,以便更好地进行错误处理。此时,可以使用 Boom.boomify() 方法将一个普通的 Error 对象转换成一个 Boom 对象来实现扩展。

例如,我们需要创建一个自定义的 Boom 对象,它的 message 属性为 "Error occurred"。我们可以使用 Boom.boomify() 方法将一个新的 Error 对象转换成我们需要的 Boom 对象。

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

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

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

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

在这个例子中,我们创建了一个新的 Error 对象 customError 并将其转换成 Boom 对象。statusCodemessage 属性是可选的,我们还可以通过扩展 Output 对象来添加其他自定义的属性,如以下代码所示:

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

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

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

在这个例子中,我们在 Output 中添加了一个名为 code 的自定义字段,用于保存自定义错误代码。这样,我们就可以在错误处理时更方便地处理自定义的错误信息。

结论

Boom 是 Hapi 中处理 HTTP 错误的重要插件。在本文中,我们介绍了 Boom 的基本用法、自定义 Boom 对象以及拓展 Boom 对象等。掌握 Boom 的用法,可以更好地进行错误处理,提高网站的稳定性和安全性。

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

纠错
反馈