原则一句话:
状态码是“机器级语义”,不是给人看的文案。一张工程师必背速查表
分类 状态码 工程含义 成功 200 / 201 / 204 请求处理完成 重定向 301 / 302 资源位置变化 客户端错 400 / 401 / 403 / 404 请求不合理 服务端错 500 我代码炸了
一、200 OK —— 一切正常
使用场景
- 查询成功
- 修改成功(同步接口)
1.1 201 Created —— 创建成功
使用场景
- 创建资源(POST /users)
- 新订单创建成功
为什么推荐用
- 比 200 更语义化
- 对 RESTful 很友好
1.2 204 No Content —— 成功但不返回内容
使用场景
- 删除成功
- 只更新状态,不需要返回体
工程好处
- 减少无意义 payload
- 明确告诉客户端:别等数据了
二、3xx
2.1 301 Moved Permanently —— 永久重定向
使用场景
- HTTP → HTTPS
- 域名迁移
📌 注意
- 浏览器和搜索引擎会缓存这个结果
2.2 302 Found —— 临时重定向
使用场景
- 登录跳转
- 短期活动页
工程提醒
- 不要滥用,否则缓存行为混乱
三、4xx
3.1 400 Bad Request —— 请求参数有问题
使用场景
- 参数缺失
- 参数格式错误
- JSON 解析失败
工程经验
- 最常见 4xx
- 后端校验失败,首选它
3.2 401 Unauthorized —— 没有“身份”
使用场景
- 没登录
- Token 失效
常见误区
- ❌ 把没权限也用 401
- ✅ 401 = 你是谁我不知道
3.3 403 Forbidden —— 有身份,但没权
使用场景
- 普通用户访问管理员接口
- 被风控拦截
口诀
401:你是谁?
403:我知道你是谁,但你不配
3.4 404 Not Found —— 资源不存在
使用场景
- URL 错误
- 数据不存在(是否暴露需谨慎)
工程提示
- 安全敏感接口有时故意返回 404
四、 500 Internal Server Error —— 服务端真出事了
使用场景
- 未捕获异常
- 代码 Bug
工程铁律
- 能用 4xx 的,绝不要用 500
- 500 一多,运维就会来找你
Comments NOTHING