如果用户超出 API 使用限制,将返回什么错误代码?

Sol*_*oub 1 api rest

正在考虑的 API 有两个限制:

  • 每日限额。
  • 并发限制。

如果请求未排队,则应提供什么 HTTP 响应代码?

到目前为止,这两个选项似乎是 409 和 503。也就是说,503 似乎表明 API 服务器本身存在问题,而不是调用它的用户已耗尽配额。

Sol*_*oub 5

进一步阅读后发现429 Too Many Requests(RFC 6585)。

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>
Run Code Online (Sandbox Code Playgroud)

请注意,此规范没有定义源服务器如何识别用户,也没有定义它如何计算请求。例如,
限制请求速率的源服务器可以基于
每个资源、整个服务器甚至一组服务器的请求计数来限制请求速率。同样,它可能通过身份验证凭据或有状态 cookie 来识别用户。

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

这似乎正是我一直在寻找的东西。

谢谢您的其他答案。