HTTP状态码
信息性状态码(100–199)
状态码 | 描述 | 应用场景 |
---|
100 Continue | 表示请求的初始部分已经被服务器接收,客户端应继续发送剩余的请求。 | 在上传大型文件前,客户端可以先发送一个带有Expect: 100-continue 头部的小请求,等待服务器确认是否接受整个请求。 |
101 Switching Protocols | 客户端请求服务器切换协议,服务器同意切换。 | 常用于WebSocket连接升级,从HTTP/HTTPS切换到WebSocket协议。 |
成功状态码(200–299)
状态码 | 描述 | 应用场景 |
---|
200 OK | 请求成功,服务器返回了预期的数据。 | 标准的成功响应,适用于大多数GET请求。 |
201 Created | 请求成功且资源被创建。 | POST请求创建新资源时使用,通常会返回新资源的位置。 |
204 No Content | 请求成功但没有内容返回。 | 更新操作完成后,如果不需要向客户端返回数据,则可使用此状态码。 |
重定向状态码(300–399)
状态码 | 描述 | 应用场景 |
---|
301 Moved Permanently | 资源已被永久移动到新位置。 | 当网站结构发生改变时,旧URL应指向新URL以保持链接的有效性。 |
302 Found | 资源临时位于另一个位置。 | 与301类似,但为临时性重定向。 |
304 Not Modified | 资源未修改。 | 用于缓存验证,避免重复传输未更改的数据。 |
客户端错误状态码(400–499)
状态码 | 描述 | 应用场景 |
---|
400 Bad Request | 请求有误,无法处理。 | 参数格式错误、缺少必要参数等情况。 |
401 Unauthorized | 请求需要用户身份验证。 | 访问受保护资源时未提供有效的认证凭据。 |
403 Forbidden | 服务器理解请求但拒绝执行。 | 用户无权限访问该资源。 |
404 Not Found | 服务器找不到请求的资源。 | 资源不存在或路径错误。 |
429 Too Many Requests | 用户在给定时间内发送了太多请求。 | 限制API调用频率,防止滥用。 |
服务器错误状态码(500–599)
状态码 | 描述 | 应用场景 |
---|
500 Internal Server Error | 服务器遇到意外情况,阻止其完成请求。 | 服务器内部错误,可能是代码bug或配置问题。 |
501 Not Implemented | 服务器不具备完成请求的功能。 | 请求的方法或功能尚未实现。 |
502 Bad Gateway | 作为网关或代理服务器收到无效响应。 | 后端服务器出现问题或网络故障。 |
503 Service Unavailable | 服务器暂时不可用。 | 过载或维护期间,建议稍后再试。 |
注: 200、201、204、301、302、400、401、403、404、500比较常用
Django开发web网站时,如果出现403可以考虑是不是HTML页面是不是缺少了有效的CSRF令牌
eg:表单内添加{% csrf_token %}
模板标签;Ajax请求中的JS代码片段手动添加(详情见Django栏目)
在接口测试中的应用
- 验证功能正确性:通过检查返回的状态码来确保API按照预期工作。例如,当执行一个成功的GET请求时,应该返回
200 OK
;而POST请求成功创建资源后,应返回201 Created
。 - 检测错误条件:利用状态码识别并修正客户端和服务器端的问题。比如,
400 Bad Request
提示你需要检查请求参数,而500 Internal Server Error
则可能意味着需要查看服务器日志以找出根本原因。 - 用户体验改进:基于返回的状态码提供友好的用户反馈。例如,当遇到
404 Not Found
时,显示“页面未找到”的消息;对于429 Too Many Requests
,提示用户稍后再试。 - 自动化测试:编写自动化测试脚本模拟各种请求条件,并根据预期的状态码验证API的行为。这有助于发现潜在的问题,提高软件的质量和可靠性。