前端按 4xx 进客户端修复分支,用 error.code 把 details.field 标红;网关不重试,监控不报警,同类错误能聚合。
用户看到「请补全 items」,保留输入直接改;错误可复现、可分类、可恢复。
数据与服务 · 网络与接口
4xx 是客户端错误:请求本身有问题,原样重发通常还会失败。按错在哪分成格式、身份、资源、频率四类,每类有对应的客户端下一步;只有 408 超时和 429 限流是重试例外。
你当客户端。队列里是一批真实 4xx 响应,每个都带统一错误契约。读状态码和 error.code,选一个客户端处理动作;选对,工单盖上对应分组色、亮出该不该重试。
/api/orders{ code: missing-field, message: 「items 不能为空」 }客户端收到这个 4xx,下一步该怎么处理?
第 1/7 单:收到 400 Bad Request,选一个客户端处理动作。
首位 4 就说明请求本身有问题,原样重发通常还会失败。把 7 张工单归类后,4xx 的共同结构就清楚了。
4xx 的下一步取决于「错在哪一层」。先看状态码分流,再读 error.code 定位到字段或动作。
4xx 响应体应带统一结构,前端才能用一个解析器处理整类错误,而不是每个接口手写 if success。
{ "error": { "code": "invalid-email", "message": "email 缺少 @", "details": { "field": "email" } } }前端读 status 分流类别(4xx 进客户端修复分支),再读 error.code 把 details.field 映射到对应输入框;网络层、重试逻辑、监控告警都靠状态码统一触发,不用每个接口重复判断。
同一个「下单失败」,返回 422 还是 200+success:false,决定了前端、网关和监控能不能各司其职。
前端按 4xx 进客户端修复分支,用 error.code 把 details.field 标红;网关不重试,监控不报警,同类错误能聚合。
用户看到「请补全 items」,保留输入直接改;错误可复现、可分类、可恢复。
HTTP 层看到的全是成功或服务端错:CDN 照缓存、重试逻辑不触发、告警乱响;前端必须每个接口手写 if success,一旦漏判就吞掉失败。
把参数错返 500,监控误报故障,值班排查半天发现是用户少填了字段——4xx 语义失效,所有人都白忙。
客户端发 POST 创建项目收到 429 Too Many Requests,响应带 Retry-After: 30,最合适的处理是什么?
术语的技术定义和行为以这些一手或权威资料为准。
和本知识点经常一起出现的概念。