npm 包 api-problem 使用教程

阅读时长 5 分钟读完

简介

api-problem 是 npm 上的一个 Node.js 工具包,它可以方便地将错误信息和 HTTP 状态码封装成符合 RFC7807 的 API Problem 对象,并返回到客户端。本文将深入介绍api-problem 的使用方法,以及其在前端开发中的指导意义。

安装

使用 npm 命令进行安装:

示例

下面我们通过一个示例来说明 api-problem 的使用方法。

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

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

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

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

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

从上面的代码中我们可以看到,首先我们引入了 api-problem 中的两个类: Problem 和 ProblemJsonErrorMiddleware。在示例中,我们创建了一个路由 /test,当访问该路由时,返回一个符合 RFC7807 规范的 API Problem 对象,并将其作为 next 的参数抛出。另外,我们还需要添加两个中间件,分别是 body-parserProblemJsonErrorMiddleware。最后,使用 express 的 listen 方法监听 3000 端口,随时与客户端进行通信。

我们使用 curl 工具发送 GET 请求:

服务器将返回一个格式化为 JSON 的错误对象:

方法和属性

Problem

new Problem(options)

创建一个 API Problem 对象。

  • options.status: 表示 HTTP 状态码,可以通过 Problem.STATUS_XXX 常量获取, 默认值是 500。
  • options.title: 表示错误的简要描述,必填。
  • options.detail: 表示错误的详细描述,可选。
  • options.type: 表示错误类型的 URI,可选(不建议使用)。
  • options.instance: 表示错误实例的 URI,可选。

Problem.STATUS_BAD_REQUEST

400,客户端提交了有问题的请求(如请求格式有误、参数错误等)。

Problem.STATUS_FORBIDDEN

403,服务端受到请求,但是拒绝提供服务。

Problem.STATUS_NOT_FOUND

404,请求资源不存在。

Problem.STATUS_SERVER_ERROR

500,服务器内部错误,无法完成请求。

ProblemJsonErrorMiddleware

ProblemJsonErrorMiddleware(options)

创建一个中间件用于处理 Error 对象,并返回为符合 RFC7807 标准的 API Problem 对象。

options.log

当一个 Error 对象被处理时,是否记录到日志中,默认为 true。

注意事项

在使用api-problem 的过程中,有些事项需要特别注意:

  • problem.detail 不能包含敏感信息,包括但不限于密码、密钥、ID 等信息。
  • 切勿在生产环境中使用开发者模式,否则客户端将直接看到错误信息。
  • 可以通过 ProblemJsonErrorMiddleware 中的 options.customResponseHandler 函数,自定义返回格式。

总结

通过上述示例的介绍,我们可以看到使用 api-problem 可以轻松地将错误信息和 HTTP 状态码转换成符合 RFC7807 标准的 API Problem 对象,并返回到客户端。

在前端开发中,我们可以借助 api-problem 提供的 API Problem 对象,让错误信息整齐规范化,提供更加友好的用户体验,同时有效降低错误调试和维护难度。

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

纠错
反馈