新增网关配额限流规则。
接口说明
该接口用于对 AI 网关增加基于消费者或消费者组的配额规则。注意,只针对于版本大于 2.1.21 的 AI 网关生效。
推荐调用逻辑:
一、先 dryRun 预检检验是否存在规则冲突
-
传 dryRun=true
-
返回含 conflictHash 的冲突预览
二、确认后正式提交
-
无冲突:dryRun=false,overwrite=false
-
有冲突且确认覆盖:dryRun=false,overwrite=true, conflictHash=<上一步返回的值>
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
调试
授权信息
|
操作 |
访问级别 |
资源类型 |
条件关键字 |
关联操作 |
|
apig:AddGatewayQuotaRule |
none |
*Gateway
|
无 | 无 |
请求语法
POST /v1/gateways/{gatewayId}/quota-rules HTTP/1.1
路径参数
|
名称 |
类型 |
必填 |
描述 |
示例值 |
| gatewayId |
string |
否 |
网关唯一标识 |
gw-d8ki1xxxxxxxxxxxxxxx |
请求参数
|
名称 |
类型 |
必填 |
描述 |
示例值 |
| body |
object |
否 |
请求体内容 |
{'key': 'value'} |
| ruleName |
string |
是 |
规则名称 |
team-rule |
| quotaDimension |
string |
是 |
配额维度/限制类型,目前支持 token、credit 枚举值:
|
token |
| quotaLimit |
integer |
是 |
周期可用总额度(限额) |
1000 |
| windowAlignment |
string |
否 |
重置周期类型。支持自然周期(windowAlignment=calendar)和自定义周期(windowAlignment=epoch) |
calendar |
| periodType |
string |
是 |
周期类型。自然周期支持按日、周、月统计,取值为 day、week 或 month;自定义周期仅支持按日统计,固定取值为 day 枚举值:
|
week |
| periodMultiplier |
integer |
否 |
周期倍数。该参数针对自定义周期规则 |
10 |
| timezone |
string |
否 |
自然周期对应的时区(UTC+x 格式) |
UTC+8 |
| subjectType |
string |
否 |
规则主体类型。consumer 代表消费者;consumer_group 代表消费者组。不传时默认为 consumer。 |
consumer_group |
| consumerGroupIds |
array |
否 |
绑定规则的消费者组 ID 列表。 |
group1,group2 |
|
string |
否 |
消费者组 ID |
consumer-group-001 |
|
| consumerIds |
array |
否 |
绑定规则的消费者 ID 列表。单次最多可操作 1000 个消费者 |
1001,1002,1003 |
|
string |
否 |
消费者 ID |
cs-xxxxxx |
|
| dryRun |
boolean |
否 |
是否仅预检(预检不下发实际配置),用于检查绑定的消费主体上是否存在冲突的规则(同一消费主体不能配置两个相同周期的自然周期配额,例如已有自然日配额的消费主体不能再新增一个自然日配额规则) |
false |
| overwrite |
boolean |
否 |
冲突时是否允许覆盖。注意如果选择允许覆盖,冲突主体(消费者或消费者组)会从旧规则解绑并绑定到新规则 |
false |
| conflictHash |
string |
否 |
冲突快照哈希,用于“确认覆盖时防并发脏覆盖”。通过先执行 dryRun=true 在返回数据提取。 当以下情况不需要填写:没有冲突;只是 dryRun=true 预检;overwrite=false,即不确认覆盖。 当当 dryRun = false 且 overwrite=true 时不带改参数或者该参数过期不匹配,后端会返回:accepted=false 并带新的冲突预览,需要重新执行 dryrun 确认新的冲突。 |
f8f44dc6cf369a017d56b7197eb4fb5ac4bbb6b09a92b9b41999541fxxxxxxxx |
返回参数
|
名称 |
类型 |
描述 |
示例值 |
|
object |
Schema of Response |
||
| requestId |
string |
请求唯一标识 |
1234567890 |
| code |
string |
状态码或错误代码 |
200, 404, 500 |
| message |
string |
消息内容 |
success |
| data |
object |
请求数据内容 |
{'key': 'value'} |
| ruleId |
string |
规则 ID |
qr-xxxxx |
| dryRun |
boolean |
是否预检 |
false |
| accepted |
boolean |
本次写请求语义是否可被系统接收,false 常见于冲突未确认覆盖等可重试场景 |
true |
| conflictPreview |
object |
冲突预览 |
|
| totalConflictCount |
integer |
冲突总数 |
2 |
| conflictHash |
string |
冲突的 hash |
f8f44dc6cf369a017d56b7197eb4fb5ac4bbb6b09a92b9b41999541fxxxxxxxx |
| items |
array<object> |
冲突的主体(消费者或消费者组)列表 |
|
|
object |
冲突的主体(消费者或消费者组)详情 |
||
| subjectType |
string |
冲突主体类型,取值为 consumer 或 consumer_group。 |
consumer |
| subjectId |
string |
冲突主体 ID |
cs-xxx |
| subjectName |
string |
冲突主体名称 |
consumer-a |
| consumerId |
string |
冲突消费者 ID(现可统一使用 subjectId 替代) |
cs-xxxxxx |
| consumerName |
string |
冲突消费者 ID(现可统一使用 subjectName 替代) |
consumer-a |
| conflictType |
string |
消费主体上已有冲突规则的类型。conflictType = "calendar"表示消费主体已有冲突规则为自然周期;conflictType = "epoch"表示已有冲突规则为自定义周期 |
calendar |
| conflictPeriodType |
string |
消费主体上已有冲突规则的周期类型。conflictPeriodType = "day"/"week"/"month"分别表示消费主体已有冲突规则的周期为日/周/月 |
week |
示例
正常返回示例
JSON格式
{
"requestId": "1234567890",
"code": "200, 404, 500",
"message": "success",
"data": {
"ruleId": "qr-xxxxx",
"dryRun": false,
"accepted": true,
"conflictPreview": {
"totalConflictCount": 2,
"conflictHash": "f8f44dc6cf369a017d56b7197eb4fb5ac4bbb6b09a92b9b41999541fxxxxxxxx",
"items": [
{
"subjectType": "consumer",
"subjectId": "cs-xxx",
"subjectName": "consumer-a",
"consumerId": "cs-xxxxxx",
"consumerName": "consumer-a",
"conflictType": "calendar",
"conflictPeriodType": "week"
}
]
}
}
}
错误码
访问错误中心查看更多错误码。
变更历史
更多信息,参考变更详情。