跳到主要内容
版本:2.13.2304

API 限流限速

本文将指导你如何在 API7 控制台中使用 limit-count 插件对 API 进行限流限速配置,以及如何验证结果。

前置要求

  1. 部署 API7 Enterprise
  2. 新建工作分区
  3. 设计 API
  4. 发布 API 到 API7 网关

创建包含 limit-count 插件的插件模板

参考文档 新建插件模板

在【9. 选择需要启用的插件,点击对应的 启用 按钮】中,选择 limit-count 插件。

在【11. 在 配置Raw Data 中,编辑插件的参数】中,填入如下配置:


{
"count": 3,
"time_window": 60,
"key_type": "var",
"rejected_code": 503,
"rejected_msg": "Too many request",
"policy": "local",
"allow_degradation": false,
"show_limit_quota_header": true
}

在这个例子中,我们限制被绑定该插件 API 只能在 60 秒内被访问 3 次,超过 3 次则返回 503 状态码,响应体为 Too many request

将插件模板应用到 API

CreateProduct 为例,参考文档 配置 API

在【9. 编辑 API 的属性】中,将插件模板修改为上一步创建的包含 limit-count 插件的插件模板。

验证限流限速

连续 4 次发送 API 请求:


curl -X POST -d '{"name": "iPhone 13 Pro", "price": 999.99}' -H 'HOST: test.com' -v http://${API7_GATEWAY_ADDRESS}/products

前三次请求正常响应,第四次请求会返回 503 状态码,响应体为 Too many request

等待 60 秒,再次使用 curl 命令发送 API 请求:


curl -X POST -d '{"name": "iPhone 13 Pro", "price": 999.99}' -H 'HOST: test.com' -v http://${API7_GATEWAY_ADDRESS}/products

请求可以正常响应:


{
"id":1
}