达到许可证限制的 HTTP 状态代码是什么

问题描述 投票:0回答:3

我想知道当用户的许可证达到时,API 应该返回的理想 HTTP 状态代码是什么?

最初我以为是 402(需要付款),但这不是我的情况。我的情况是,如果我的用户有添加 10 个插件的限制,如果她尝试添加第 11 个插件,他们应该会收到一个错误,表明其已达到限制。

请帮我提供适当的 HTTP 状态代码。

提前致谢

http http-status-codes
3个回答
46
投票

没有“超出配额”的 HTTP 状态代码,但是,如果您在响应负载中添加了良好的描述,则有一些适合这种情况的 HTTP 状态代码。 如果超出了请求配额,但付款后可以执行更多请求,您可以考虑

402

状态代码(尽管文档说它是保留供将来使用,但其原因短语非常清晰并且定义良好)它的目的):


6.5.2。第402章 需要付款

402

(需要付款)状态代码保留供将来使用。


当超过请求配额时,您可以使用
403

表示禁止该请求。请求负载中的良好描述总是受欢迎的:


6.5.3。第403章 禁止

403

(禁止)状态代码表示服务器理解 请求但拒绝授权。一个服务器希望 公开请求被禁止的原因可以描述 响应负载中的原因(如果有)。 [..]


如果您对每小时/每天的请求数进行限制,则
429

状态代码可能适合您的需求(但是,服务器使用此状态代码来指示短时间内收到了太多请求)时间量,即客户端受到限制):


4。第429章 请求过多

429

状态码表示用户发送过多 给定时间内的请求(“速率限制”)。

响应表述应包括详细解释
条件,并且可以包含一个 

Retry-After

 标头,指示多长时间
在提出新请求之前等待。
例如:

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

状态代码的响应不得由缓存存储。


HTTP 状态代码是可扩展的

。如果上述状态代码不能满足您的需求,您可以创建自己的状态。由于这是客户端错误,因此新的状态代码应该在 4xx

 范围内。


10
投票
422 Unprocessable Entity

在这种情况下应该可以工作。请求本身的语法结构良好。问题出在当前条件下,因为用户达到了限制。错误响应应该对如何解决这个现状有帮助。 https://httpstatuses.com/422 我的第二个赌注是

409冲突

,但与版本控制和冲突更改有关。 https://httpstatuses.com/409


5
投票
业务逻辑错误

”和422无法处理的实体,可以更好。

超文本传输协议 (HTTP) 422 Unprocessable Entity 响应状态代码表示服务器理解请求实体的内容类型,并且请求实体的语法正确,但无法处理所包含的指令。

参见文档

© www.soinside.com 2019 - 2024. All rights reserved.