简介
http-typed-errors 是一个简单易用的 NPM 包,用于处理 HTTP 请求过程中的错误信息,从而返回符合 API 规范的错误信息结构。
一般来说,当我们进行 API 开发时,我们需要自己定义错误信息结构,使其符合一定的标准,再用 try-catch 语句来捕获错误并进行处理。这个流程比较繁琐,还需要自己写很多重复代码。而 http-typed-errors 正是为了解决这个问题而诞生的,它可以通过简单的配置和代码调用,让我们可以轻松地统一和管理错误信息结构。
在接下来的文章中,我们将会了解 http-typed-errors 的具体使用方法以及一些小技巧。
安装和使用
先要安装这个包,使用 npm 命令进行安装:
$ npm i -S http-typed-errors
安装完毕之后,我们就可以在项目中引入并使用了。下面是一个简单的使用示例:
-- -------------------- ---- ------- ----- --------------- - ----------------------------- ----- ------- - ------------------- ----- --- - ---------- ------------- ---- ----- -- - --- - -- ---- ---- -- ------ - ------- - ----- ------- - ----- ---------- - ---- -- ------ ---------- --------- ----- ------------- - ------------------------------------------- ----------------------------- ------ ------------- --- - --- -----------------
上面的代码中,我们首先引入了 http-typed-errors 和 express,然后创建了一个 express 实例,用于处理请求。在请求处理的中间件中,我们用 try-catch 来捕获错误,并使用 httpTypedErrors.getErrorByCode() 方法获取对应的错误信息结构,最后返回到请求的客户端。
这个过程看起来非常简单,但是 httpTypedErrors.getErrorByCode() 方法实际上是一个非常灵活的工具。接下来我们会详细地探讨一下它的实现。
错误信息结构
我们知道,大部分的 HTTP API 都会定义一个标准的错误信息结构,以便客户端在收到错误信息时进行处理。这个错误信息结构通常包含以下几个属性:
- code:错误码,客户端可以据此判断错误类型。
- message:错误信息,通常用于展示给用户。
- description:错误描述,更详细地描述错误原因。
- data:附加数据,一些额外的错误信息。
在实际开发中,我们通常要求错误信息结构更加严谨且尽量符合一定的规范。而 http-typed-errors 就是提供了这样一个标准的错误信息结构,并在不同的错误类型之间进行了分类,从而可以按需求获取特定的错误信息结构。
在 http-typed-errors 中,我们定义了以下几个常见的错误类型:
- 400 - Bad Request
- 401 - Unauthorized
- 403 - Forbidden
- 404 - Not Found
- 405 - Method Not Allowed
- 409 - Conflict
- 500 - Internal Server Error
- 503 - Service Unavailable
每个错误类型都对应了一个对应的错误信息结构,我们可以通过调用 httpTypedErrors.getErrorByCode() 方法来获取它们。下面是一个简单的示例:
-- -------------------- ---- ------- ----- --------------- - ----------------------------- ----- -------- - ------------------------------------ ---------------------- -- - ----- ---- -------- ---- --------- ------------ ---- ------ ----- --- ---------- --- ------- --- -- ------- --------- ----- ---- - ----- -------- - ------------------------------------ ---------------------- -- - ----- ---- -------- ---- ------- ------------ ---- --------- -------- --- --- ----- -- ---- --------- ----- ---- -
上述示例中,我们分别根据错误码获取了两个错误信息结构。可以看到,我们只需要调用一个方法就能返回一个符合规范且严谨的错误信息结构。
需要注意的是,我们可以通过自定义错误类型的方法来添加更多错误类型。我们仍然使用 httpTypedErrors.getErrorByCode() 方法获取错误信息结构,只需要将自定义的错误码传入即可。具体添加方式可以查看官方文档。
其他方法
除了获取错误信息结构以外,http-typed-errors 中还包含了一些其他的方法。
httpTypedErrors.getAllErrors()
这个方法会返回一份全部错误类型和错误信息的列表,其中每一项都是一个包含 code 和 message 的对象。我们可以在我们的应用中使用这个方法来显示错误类型列表(例如作为 API 文档的一部分),以此让用户了解服务器可能返回的错误类型。下面是一个示例:
-- -------------------- ---- ------- ----- --------------- - ----------------------------- ----- --------- - ------------------------------- ----------------------- -- - -- - ----- ---- -------- ---- -------- -- -- - ----- ---- -------- -------------- -- -- - ----- ---- -------- ----------- -- -- - ----- ---- -------- ---- ------ -- -- - ----- ---- -------- ------- --- -------- -- -- - ----- ---- -------- ---------- -- -- - ----- ---- -------- --------- ------ ------ -- -- - ----- ---- -------- -------- ------------ - -- -
httpTypedErrors.getErrorByMessage(message)
这个方法会根据错误信息的内容(即 message 属性)来返回一个错误信息结构。这个方法可以在我们需要精确匹配某些错误信息时使用,例如:
-- -------------------- ---- ------- ----- --------------- - ----------------------------- ----- -------- - -------------------------------------- ---------- ---------------------- -- - ----- ---- -------- ---- --------- ------------ ---- ------ ----- --- ---------- --- ------- --- -- ------- --------- ----- ---- - ----- -------- - ------------------------------------------- ------ -------- ---------------------- -- - ----- ---- -------- --------- ------ ------- ------------ ---- ------ ----------- -- ---------- --------- ----- --------- -- ---- ---------- --- ---------- ----- ---- -
需要注意的是,如果传入的错误信息在错误类型列表中不存在,那么这个方法会返回 null。
httpTypedErrors.addErrorType(code, message, description)
这个方法可以让我们添加新的错误类型,其中 code 和 message 是必填项,description 则是可选的。例如:
-- -------------------- ---- ------- ----- --------------- - ----------------------------- ----- --------------- - ---- ----- ------------------ - ------- ------- ----- ---------------------- - ----- -- - ------ -------- --------------------------------------------- ------------------- ------------------------ ----- ----------- - ------------------------------------------------ ------------------------- -- - ----- ---- -------- ------- ------- ------------ ----- -- - ------ -------- ----- ---- -
总结
http-typed-errors 是一个非常方便的工具,能够让我们更好地管理错误信息结构,使开发过程更加友好和高效。在使用过程中,我们应该尽可能地使用其提供的默认错误类型,并且在需要时使用自定义错误类型。同时,我们也应该在接口文档中列出所有可能的错误类型,以方便使用者理解和应对错误情况。
希望这篇文章对你有所帮助!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055aae81e8991b448d83f9