400、401、403、422:实用的 API 错误排查流程
帮助你区分请求格式错误、认证失败、权限不足和校验失败,避免团队在 API 排障时修错方向。
很多团队在排查 API 错误时,会把 400、401、403、422 全都当成同一类失败来看待。这样最容易带来的后果,就是把时间浪费在错误的修复方向上:明明是参数结构问题,却去重置 token;明明是权限问题,却不断重发请求体。
更有效的做法,是先判断失败发生在哪一个边界:请求结构、身份认证、权限授权,还是语义级校验。只要先把这个边界判断对,后面的排查就会变得清晰很多。
先把请求结构问题和认证问题分开
如果服务端连请求结构都无法稳定解析,那么优先关注的应该是 400 Bad Request,而不是先去怀疑 token 或权限。损坏的 JSON、错误的 content-type、重复且冲突的参数、非法查询字符串,通常会在真正的认证逻辑运行前就失败。
因此,400 和 401、403 的排查路径应该完全不同。你首先要确认的是:这个请求对于服务端来说是否是可被理解的请求。
- 还原实际发送的 body 和 headers。
- 检查 JSON 或 payload 结构是否有效。
- 检查 query 参数、content-type 和重复值。
这一步通常适合把 HTTP Status Code Explorer 和 JSON Validator 结合起来使用。
把 422 理解为格式可读但业务上不可接受
422 Unprocessable Entity 的关键点在于:请求格式通常是合法的,服务端已经成功解析了它,但在字段验证、业务规则、流程约束等更深一层的检查中拒绝了它。这和 400 的结构本身就有问题是两种完全不同的失败边界。
因此,面对 422,你应该优先检查字段错误、必填项、取值范围、枚举限制、字段之间的依赖关系,而不是继续怀疑 JSON 语法。
400:请求结构本身就不可靠401:身份未被接受403:身份已接受,但没有权限422:请求可读,但语义或业务规则不成立
把这四类问题分开,能显著减少 API 排障时的误判。
HTTP Status Code Explorer
Search common HTTP status codes, compare confusing client and server failures, and keep a sharper API debugging checklist in the browser.
JSON Validator – Check JSON Syntax & Find Errors
Strict, fast, and secure client-side JSON validator. Features live syntax highlighting, exact error line detection, and detailed context snippets.
JWT Decoder
Decode and inspect JWT tokens instantly to view headers, payloads, and expiration status locally in your browser.