用途
api-error-handling 是一个用于实现标准化 API 错误处理的技能。它帮助开发者在构建生产级 API 时,统一错误响应格式、正确使用 HTTP 状态码、记录日志,并向用户返回友好的错误信息。
主要能力
- 标准错误响应格式:定义统一的错误响应结构,包含 error 对象,内含 code、message、status、requestId、timestamp 以及可选的 details 字段。details 可用于列出具体字段级错误,例如字段名与对应提示。
- 错误类(Node.js):提供 ApiError 类,继承自 Error,构造函数接收 code、message、status(默认 500)和 details(默认 null)。并提供静态工厂方法,如 badRequest(400)、notFound(404)、unauthorized(401)等。
- 全局错误处理中间件:示例中间件根据 err.status 决定状态码,构造统一响应体;对 500 及以上错误隐藏具体信息,返回“Internal server error”;当存在 details 时附加到响应;对 5xx 错误调用 logger.error 记录;最终以对应状态码返回 JSON。
- 熔断器模式(Circuit Breaker):提供 CircuitBreaker 类,包含失败计数、阈值(默认 5)、超时(默认 30000 毫秒)和状态(CLOSED、OPEN、HALF_OPEN)。call 方法在 OPEN 状态直接抛出“Circuit open”;调用成功则重置失败计数;失败累计达到阈值时切换为 OPEN,并在超时后转为 HALF_OPEN。
- 附加实现参考:资料提到可参见 references/python-flask.md,其中包含 Python Flask 自定义异常处理、带自动恢复的熔断器、指数退避重试以及 Sentry 集成。
使用方式
资料以代码示例形式展示用法:定义 ApiError 类及其静态方法,在 Express 类框架中通过 app.use 注册全局错误处理中间件,并使用 CircuitBreaker 包装可能失败的外部调用。具体安装命令、依赖引入方式及完整项目集成步骤暂未提供。
适用场景
- 构建生产级 API 时统一错误响应。
- 需要区分客户端错误(4xx)与服务端错误(5xx)的服务。
- 需要请求 ID 追踪、日志分级记录和用户友好提示的后端系统。
- 需要对外部依赖调用进行熔断保护、避免级联故障的场景。
限制
资料未提供具体的安装命令、支持的框架版本、性能指标或收费信息。示例代码以 Node.js 为主,Python 相关实现仅作为参考文件提及,未在正文中展开。