我想知道当用户的许可证达到时,API 应该返回的理想 HTTP 状态代码是什么?
最初我以为是 402(需要付款),但这不是我的情况。我的情况是,如果我的用户有添加 10 个插件的限制,如果她尝试添加第 11 个插件,他们应该会收到一个错误,表明其已达到限制。
请帮我提供适当的 HTTP 状态代码。
提前致谢
没有“超出配额”的 HTTP 状态代码,但是,如果您在响应负载中添加了良好的描述,则有一些适合这种情况的 HTTP 状态代码。 如果超出了请求配额,但付款后可以执行更多请求,您可以考虑
402
状态代码(尽管文档说它是保留供将来使用,但其原因短语非常清晰并且定义良好)它的目的):
402
(需要付款)状态代码保留供将来使用。
当超过请求配额时,您可以使用
403
表示禁止该请求。请求负载中的良好描述总是受欢迎的:
403
(禁止)状态代码表示服务器理解 请求但拒绝授权。一个服务器希望 公开请求被禁止的原因可以描述 响应负载中的原因(如果有)。 [..]
如果您对每小时/每天的请求数进行限制,则
429
状态代码可能适合您的需求(但是,服务器使用此状态代码来指示短时间内收到了太多请求)时间量,即客户端受到限制):
HTTP 状态代码是可扩展的429
状态码表示用户发送过多 给定时间内的请求(“速率限制”)。
响应表述应包括详细解释 条件,并且可以包含一个标头,指示多长时间 在提出新请求之前等待。例如:
HTTP/1.1 429 Too Many Requests Content-Type: text/html Retry-After: 3600 <html> <head> <title>Too Many Requests</title> </head> <body> <h1>Too Many Requests</h1> <p>I only allow 50 requests per hour to this Web site per logged in user. Try again soon.</p> </body> </html>
请注意,该规范没有定义源服务器如何 识别用户,以及如何计算请求。例如,一个 限制请求速率的源服务器可以基于 整个服务器上每个资源的请求计数, 甚至在一组服务器之间。同样,它可能会识别用户 通过其身份验证凭据或有状态 cookie。带有
429
状态代码的响应不得由缓存存储。
。如果上述状态代码不能满足您的需求,您可以创建自己的状态。由于这是客户端错误,因此新的状态代码应该在 4xx
范围内。