错误响应协议
本文只写源码里已经存在的字段,加上 Spec 里尚未落地的扩展。旧表里的 1001~1303、msg 字段名都不是 RespInfo 的实现。
当前 RespInfo
类:com.mdframe.forge.starter.core.domain.RespInfo。
| 字段 | 类型 | 说明 |
|---|---|---|
code | Integer | 响应状态码 |
message | String | 响应消息。不是 msg |
data | T | 响应数据。成功或失败都可能为 null |
timestamp | Long | 构造时 System.currentTimeMillis() |
@JsonInclude(NON_NULL),空字段不会出现在 JSON 里。
工厂方法(源码默认文案):
| 方法 | code | message |
|---|---|---|
success() | 200 | 操作成功 |
success(data) | 200 | 操作成功 |
success(message, data) | 200 | 调用方传入 |
error() | 500 | 操作失败 |
error(message) | 500 | 调用方传入 |
error(code, message) | 调用方 | 调用方 |
build(code, message, data) | 调用方 | 调用方 |
当前 BusinessException
类:com.mdframe.forge.starter.core.exception.BusinessException。
| 字段 | 默认 |
|---|---|
code | 500 |
message | 无参构造是 业务处理异常 |
data | 可选 |
这是业务抛出的整数码 + 文案,不是稳定 errorKey。不要把某个业务模块随手写的 1001 登记成全局错误码表。
Spec 规划中的扩展
unified-error-diagnostics 还没有导出 forge-errors-manifest.json,RespInfo 也还没有这些字段:
text
errorKey, traceId, help
help.cause, help.configLocations[], help.actions[], help.docsUrl, help.retryable规划示例(现在的运行时不会返回):
json
{
"code": 500,
"errorKey": "START-DB-COLLATION-MIXED",
"message": "数据库排序规则不一致,初始化失败",
"help": {
"cause": "目标数据库、表或字符串列混用了不同的排序规则。",
"docsUrl": "/support/errors/database/START-DB-COLLATION-MIXED",
"retryable": false
},
"traceId": "01J63Q5Q8KJ9M7A2E4T7W1X3YC",
"timestamp": 1787623200000
}首批 errorKey 清单见 故障排查中心,机器可读副本是 .docs/catalog/errors.yml。
前端
等 errorKey 落地后再按编号跳转文档。现在只能展示 message,401/403 继续走现有登录跳转。不要根据文案关键词猜配置位置。
