使用 connexion 和 swagger 制作的速率限制 REST API

问题描述

我正在使用 Flask 和 connexion 构建 REST API。 (Python)

我正在使用包含所有端点、方法等定义的 swagger.yml 文件将 api 添加到 connexion 应用程序中...

问题是,如何为特定资源/路由/呼叫添加速率限制?

我似乎无法在文档中找到它。

谢谢。

解决方法

您可以将 X-Rate-Limit-* HTTP 标头与 http 429 状态代码一起使用。

这实际上在 openapi 中看起来像:

  ....
  responses:
    "200":
      description: Success response
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/YourResponseModel"
      headers:
        "X-Rate-Limit-Limit": {
          "description": "The number of allowed requests in the current period","schema": {
            "type": "integer"
          }
        },"X-Rate-Limit-Remaining": {
          "description": "The number of remaining requests in the current period","X-Rate-Limit-Reset": {
         "description": "The number of seconds left in the current period","schema": {
           "type": "integer"
         }
      }
    "429": 
      description: Too many requests
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorMessageResponse"

  ....

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...