状态码笔记
201 表示资源被创建了
204 表示请求成功了,但是并没有什么信息需要返回
202 表示服务器接受了请求,但是还未处理,响应中应该包含相应的指示信息,告诉客户端该去哪里查询这次处理是否真正完成了
- 200 OK - 对成功的 GET、PUT、PATCH 或 DELETE 操作进行响应。也可以被用在不创建新资源的 POST 操作上
- 201 Created - 对创建新资源的 POST 操作进行响应。应该带着指向新资源地址的 Location 头
- 202 Accepted - 服务器接受了请求,但是还未处理,响应中应该包含相应的指示信息,告诉客户端该去哪里查询关于本次请求的信息
- 204 No Content - 对不会返回响应体的成功请求进行响应(比如 DELETE 请求)
- 304 Not Modified - HTTP 缓存 header 生效的时候用
- 400 Bad Request - 请求异常,比如请求中的 body 无法解析
- 401 Unauthorized - 没有进行认证或者认证非法
- 403 Forbidden - 服务器已经理解请求,但是拒绝执行它
- 404 Not Found - 请求一个不存在的资源
- 405 Method Not Allowed - 所请求的 HTTP 方法不允许当前认证用户访问
- 410 Gone - 表示当前请求的资源不再可用。当调用老版本 API 的时候很有用
- 415 Unsupported Media Type - 如果请求中的内容类型是错误的
- 422 Unprocessable Entity - 用来表示校验错误
- 429 Too Many Requests - 由于请求频次达到上限而被拒绝访问
9. 支持限流
为了防止服务器被攻击,减少服务器压力,需要对接口进行合适的限流控制。
限流是非常有必要的。现实的生产环境中,没有限流机制的接口,很容易让服务器陷入不可用的状态。一些接口也会被黑客利用,盗取数据,或者做安全渗透测试。虽然无法完全避免此类情况出现,但是至少你多了一个门槛。
限流时,需要在响应头信息中加入合适的信息,告知客户端当前的限流情况:
- X-RateLimit-Limit :10000 最大访问次数
- X-RateLimit-Remaining :9993 剩余的访问次数
- X-RateLimit-Reset :1513784506 到该时间点,访问次数会重置为
X-RateLimit-Limit
以上三个参数是一般接口常见的限流参数,我们会遵循此命名方式。
超过限流次数后,需要返回 429 Too Many Requests
状态码。