正在加载文章...
分享这篇文章
继续阅读
浏览器、前端应用和后端服务都会根据 HTTP 状态码判断请求结果。状态码不是装饰字段,它会影响缓存、重试、监控、报警和客户端错误处理。
200 OK 表示请求已成功处理。创建资源时,201 Created 更清楚。301 表示永久重定向,302 表示临时重定向。它们会影响浏览器缓存和搜索引擎处理。400 Bad Request 常用于请求格式错误。401 Unauthorized 表示未认证,403 Forbidden 表示已认证但没有权限。404 Not Found 表示资源不存在。500 Internal Server Error 表示服务端内部错误。502 Bad Gateway 常见于网关或反向代理无法从上游服务拿到有效响应。一个常见反模式是:后端捕获所有异常,然后始终返回 200 OK,只在 JSON 里写 {"success": false, "error": "报错了"}。
这样做会带来几个问题:
如果用户未登录,就返回 401。如果没有权限,就返回 403。如果服务端异常,就返回 500 或更具体的 5xx。业务错误可以放在响应体里,但状态码也要表达同一件事。
状态码要反映请求结果。前端、网关、监控和第三方调用方都依赖它做判断。把错误藏进 200 响应体里,只会把简单问题推给下游。