HTTP状态码是API响应的第一层信号。准确使用状态码能让调用方快速判断请求结果,减少不必要的错误排查时间。很多团队在状态码使用上存在不足,要么所有响应都返回200,要么状态码使用混乱。本文系统讲解API开发中常用的HTTP状态码及其最佳实践。
2xx成功状态码
200 OK 是最常用的成功状态码,用于GET和PUT请求的成功响应。201 Created 用于POST创建资源的成功响应,应在响应头中包含 Location 指向新资源。204 No Content 用于DELETE请求和不需要返回数据的PUT/PATCH操作。202 Accepted 用于异步操作,表示请求已接受但尚未处理完成。206 Partial Content 用于分块下载和范围请求。
3xx重定向状态码
3xx状态码在API中也有用武之地。301 Moved Permanently 用于资源永久迁移。302 Found 用于临时重定向。304 Not Modified 配合ETag或Last-Modified实现条件请求缓存。307 Temporary Redirect 保持请求方法不变的重定向。308 Permanent Redirect 保持请求方法不变的永久重定向。使用重定向可以优雅地处理资源地址变更,但不要滥用。
4xx客户端错误
400 Bad Request 是最通用的客户端错误,表示请求格式错误或参数校验失败。401 Unauthorized 表示未提供认证信息或认证失败。403 Forbidden 表示已认证但无权限访问。404 Not Found 表示资源不存在。405 Method Not Allowed 表示请求方法不支持。409 Conflict 表示请求与当前状态冲突,如重复创建。422 Unprocessable Entity 表示请求体语义错误。429 Too Many Requests 表示请求频率超过限制。