build: add api server error normalization layer

This commit is contained in:
2026-04-21 01:24:09 +08:00
parent 0ac5606a41
commit cb069de32e
8 changed files with 146 additions and 2 deletions

View File

@@ -29,7 +29,7 @@
1. [x] 接入统一日志与 tracing
2. [x] 接入 `request_id`
3. [ ] 接入统一错误处理中间件
3. [x] 接入统一错误处理中间件
4. [ ] 接入 response envelope
5. [ ] 接入 `/healthz`
@@ -45,6 +45,12 @@
2. `request_id` 会统一写入请求 `extensions` 与请求头,供 tracing、错误处理中间件和响应头层复用。
3. 响应头回写 `x-request-id` 仍属于后续独立任务,本阶段只完成请求上下文准备。
当前错误处理中间件约定:
1. 对 Axum 默认产生的空 `4xx / 5xx` 响应,统一归一化为 legacy 兼容 JSON 错误体:`{ error: { code, message, details? } }`
2. 已经带 `content-type` 的业务错误响应不会被覆盖,避免抢走后续 response envelope 的职责。
3. 统一错误日志会复用当前请求的 `request_id`便于后续和响应头、envelope 元信息串联。
## 3. 边界约束
1. `api-server` 负责 HTTP、SSE、Cookie、Header、路由与协议装配。