RESTful API 经常会被开发者用来构建前端应用,因为它可以提供简单、可伸缩的接口,但是当出现错误时,必须要有很好的错误处理机制。在本文中,我们将学习如何使用 Hapi 和 Boom 库来实现 RESTful API 的错误处理。
Hapi
Hapi 是一个十分流行的 Node.js Web 应用框架,它提供了一个灵活、稳定的基础设施,以便开发者可以专注于构建高效、可扩展的 Web 应用。Hapi 使用插件化设计,所以它的操作系统可以根据需要大大扩展。Hapi 尤其适用于创建 RESTful API,这也是我们本文主要介绍的内容。
我们使用 Hapi 来创建 RESTful API 的步骤很简单,首先安装 Hapi:
npm install hapi
然后在项目中引入 Hapi:
const Hapi = require('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