接口状态码
接口状态码通常指的是在计算机网络通信中,服务器对客户端请求作出的响应状态代码。这些状态码是HTTP协议的一部分,用于定义请求的结果。状态码是一个三位数字的响应码,第一个数字定义了响应的类别。
常用的HTTP状态码分类如下:
-
1xx(信息性状态码):表示接收的请求正在处理。
-
2xx
(成功状态码):表示请求已成功被服务器接收、理解,并接受。
- 200 OK:请求已成功,请求所希望的响应头或数据体将随此响应返回。
- 201 Created:请求已被履行,且处理过程中已创建了一个新的资源。
- 204 No Content:服务器已经成功处理了请求,但没有返回任何内容。
-
3xx
(重定向状态码):需要客户端采取进一步的操作才能完成请求。
- 301 Moved Permanently:请求的资源现在永久性地存在于另一个URI。
- 302 Found:请求的资源现在临时从不同的URI响应请求。
-
4xx
(客户端错误状态码):请求包含语法错误或者无法完成请求。
- 400 Bad Request:服务器不能或不会解析请求。
- 401 Unauthorized:请求要求用户的身份认证。
- 403 Forbidden:服务器理解请求客户端的请求,但是拒绝执行此请求。
- 404 Not Found:请求失败,请求所希望得到的资源未被在服务器上发现。
-
5xx
(服务器错误状态码):服务器在处理请求的过程中发生了错误。
- 500 Internal Server Error:服务器遇到了一个未曾预料的情况,导致它无法完成对请求的处理。
- 502 Bad Gateway:作为网关或代理工作的服务器从上游服务器收到了无效的响应。
- 503 Service Unavailable:服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
这些状态码帮助开发人员调试应用程序,并且对于维护Web服务来说非常重要。当构建API时,合理使用这些状态码可以提高用户体验,并且让API更容易理解和维护。
接口状态码使用场景示例
2xx 成功状态码使用场景
- 200 OK: 例如,当用户通过浏览器向一个新闻网站发送获取某篇文章详情的请求时,如果服务器成功找到该文章对应的内容,并且能够按照请求要求将文章的标题、正文、配图等信息组织好返回给客户端,就会返回 200 OK 状态码,客户端(浏览器)接收到后就可以正常展示文章内容给用户。
- 201 Created: 在一个在线文档协作平台中,用户新建了一个文档。客户端向服务器发送创建文档的请求,服务器接收到请求后,在后台数据库中成功为该用户创建了对应的文档记录,并分配了相应的文档 ID 等资源,此时服务器就会向客户端返回 201 Created 状态码,告知客户端新的文档资源已成功创建,客户端后续可以基于这个创建成功的反馈来进行进一步操作,比如跳转到新文档的编辑页面等。
- 204 No Content: 比如用户在一个任务管理应用中对某个已完成的任务进行删除操作,服务器接收到删除请求后,顺利从数据库中将该任务相关的数据删除,整个操作执行成功但没有额外需要返回给客户端的数据(因为只是执行了删除,不需要返回具体的内容),这时服务器就会返回 204 No Content 状态码,客户端收到该状态码后可以相应地更新本地任务列表的显示,将已删除的任务移除等。
3xx 重定向状态码使用场景
- 301 Moved Permanently: 某公司原来的官方网站域名是
oldcompany.com,后来出于品牌升级等原因,将网站整体迁移到了newcompany.com这个新域名下。当用户在浏览器中输入oldcompany.com去访问时,服务器检测到请求的是已经迁移的旧域名资源,就会返回 301 Moved Permanently 状态码,并在响应头中指明新的资源所在的 URI(也就是newcompany.com对应的地址),浏览器收到这个状态码和新地址后,会自动重定向到newcompany.com进行后续访问。 - 302 Found: 在一个电商网站中,有一些商品在做促销活动,会有专门的活动页面来展示优惠商品。当用户点击商品详情页中的某个促销入口链接时,服务器可能先将用户临时重定向到对应的活动页面(通过返回 302 Found 状态码,并在响应头里指定活动页面的 URI),等活动结束或者用户离开活动页面后,后续再通过正常的导航等操作可以回到原来的商品详情页或者其他页面,这里就是临时性地将请求从商品详情页重定向到活动页面,使用 302 Found 状态码来实现。
4xx 客户端错误状态码使用场景
- 400 Bad Request: 假设用户在一个注册页面填写表单信息时,没有按照要求的格式填写手机号(比如填了非数字字符或者长度不符合要求等),客户端将这个注册信息请求发送给服务器,服务器按照预设的验证规则发现无法解析这个手机号字段,认为请求不符合格式要求,就会返回 400 Bad Request 状态码,告知客户端请求存在语法等方面的错误,客户端可以弹出相应提示框让用户重新正确填写手机号等信息后再次提交请求。
- 401 Unauthorized: 在一个企业内部的办公系统中,有部分功能是需要员工登录账号并且具有特定权限才能访问的,比如查看财务报表功能。如果员工没有登录就直接尝试访问该功能对应的接口,服务器接收到请求后,发现请求缺少必要的身份认证信息,就会返回 401 Unauthorized 状态码,客户端(一般是浏览器)收到后可以引导用户跳转到登录页面进行登录操作,登录成功并携带有效的身份认证凭证再次访问该功能接口时才有可能被允许访问。
- 403 Forbidden: 还是在上述企业办公系统中,某个普通员工虽然已经登录了账号,但是尝试去访问只有管理层才能查看的薪酬数据页面,服务器接收到请求后,识别出该员工的权限不足(虽然请求格式等没问题且知道是哪位用户发起的请求),不允许其访问对应的资源,就会返回 403 Forbidden 状态码,客户端可以显示相应的提示信息告知用户无权访问该页面。
- 404 Not Found: 用户在浏览器中输入了一个错误的网页地址,比如
www.example.com/nonexistentpage(这个页面在服务器上根本不存在对应的资源),服务器接收到该请求后,查找自身资源发现找不到对应的页面内容,就会返回 404 Not Found 状态码,浏览器接收到后通常会显示相应的 404 页面提示用户所访问的页面不存在,可以引导用户检查输入的网址是否正确或者返回网站首页等操作。
5xx 服务器错误状态码使用场景
- 500 Internal Server Error: 在一个在线购物网站的后台服务器中,正在处理用户下单的请求,在执行订单创建、库存扣减以及关联支付等一系列复杂操作时,突然数据库出现了故障(比如某个表索引损坏等意外情况),导致服务器没办法按照正常流程完成整个下单请求的处理,此时服务器就会返回 500 Internal Server Error 状态码,告知客户端(一般是用户的浏览器或者购物 APP)服务器内部出现了未曾预料的问题,客户端可以提示用户稍等片刻后再次尝试下单或者联系网站客服等操作。
- 502 Bad Gateway: 假如某个网站使用了反向代理服务器来转发客户端请求到后端的多个应用服务器进行处理。某一时刻,后端的某个应用服务器出现故障,向代理服务器返回了无效的响应(可能是数据格式错误或者根本没按照约定返回响应内容等情况),代理服务器作为网关接收到这样的无效响应后,就会向客户端返回 502 Bad Gateway 状态码,提示客户端当前网关收到了来自上游服务器的无效响应,网站运维人员需要及时排查后端应用服务器的问题来恢复正常服务。
- 503 Service Unavailable: 在一些大型网站进行系统升级维护期间,服务器会暂时停止对外提供服务。比如一个社交平台计划在凌晨 2 点到 4 点进行服务器扩容升级,在这个时间段内,当有用户尝试登录或者使用平台的各种功能时,服务器就会返回 503 Service Unavailable 状态码,告知用户当前服务器由于正在进行维护等原因暂时无法使用,用户可以稍后再尝试访问,同时网站一般也会提前发布公告告知用户维护的时间区间等信息。