当API上线后,系统会默认给每个API提供一个流控策略,API提供者可以根据自身API的服务能力及负载情况变更这个流控策略。
流控策略即限制API在一定长度的时间内,能够允许被访问的最大次数。
HTTP/HTTPS请求方法以及URI如下表所示。
表 1 HTTP/HTTPS请求方法以及URI
请求方法
|
URI
|
POST
|
/v1/{project_id}/apigw/instances/{instance_id}/throttles
|
URI中的参数说明如下表所示。
表 2 参数说明
名称
|
是否必选
|
类型
|
说明
|
project_id
|
是
|
String
|
项目ID。可从控制台“我的凭证”中获取region下项目ID,管理员权限可查询。
|
instance_id
|
是
|
String
|
实例ID,可从API网关控制台的专享版实例信息中获取。
|
表 3 参数说明
参数
|
是否必选
|
类型
|
说明
|
name
|
是
|
String
|
流控策略名称。
支持汉字,英文,数字,下划线,且只能以英文和汉字开头,3 ~ 64字符。
|
api_call_limits
|
是
|
Integer
|
API流量限制是指时长内一个API能够被访问的次数上限。该值不超过系统默认配额限制,系统默认配额为200tps,用户可根据实际情况修改该系统默认配额。输入的值不超过2147483647。正整数。
|
user_call_limits
|
否
|
Integer
|
用户流量限制是指一个API在时长之内每一个用户能访问的次数上限,该数值不超过API流量限制值。输入的值不超过2147483647。正整数。
|
app_call_limits
|
否
|
Integer
|
APP流量限制是指一个API在时长之内被每个APP访问的次数上限,该数值不超过用户流量限制值。输入的值不超过2147483647。正整数。
|
ip_call_limits
|
否
|
Integer
|
源IP流量限制是指一个API在时长之内被每个IP访问的次数上限,该数值不超过API流量限制值。输入的值不超过2147483647。正整数。
|
time_interval
|
是
|
Integer
|
流量控制的时长单位。与“流量限制次数”配合使用,表示单位时间内的API请求次数上限。输入的值不超过2147483647。正整数。
|
time_unit
|
是
|
String
|
流控的时间单位:
|
remark
|
否
|
String
|
流控策略描述
字符长度不超过255。
|
type
|
否
|
Integer
|
流控策略的类型,取值如下:
- 1:独享,表示绑定到流控策略的单个API流控时间内能够被调用多少次。
- 2:共享,表示绑定到流控策略的所有API流控时间内能够被调用多少次。
|
enable_adaptive_control
|
否
|
String
|
是否开启动态流控:
暂不支持
|
请求消息样例:
{
"api_call_limits": 800,
"user_call_limits": 500,
"app_call_limits": 300,
"ip_call_limits": 600,
"name": "每秒800次",
"remark": "API每秒800次,用户500次,APP300次,IP600次",
"time_interval": 1,
"time_unit": "SECOND"
}
表 4 参数说明
参数
|
类型
|
说明
|
id
|
String
|
流控策略的编号
|
name
|
String
|
流控策略的名称
|
api_call_limits
|
Integer
|
单个API流控时间内能够被访问的次数限制
|
user_call_limits
|
Integer
|
单个用户流控时间内能够访问API的次数限制
|
app_call_limits
|
Integer
|
单个APP流控时间内能够访问API的次数限制
|
ip_call_limits
|
Integer
|
单个IP流控时间内能够访问API的次数限制
|
time_interval
|
Integer
|
流控的时长
|
time_unit
|
String
|
流控的时间单位
|
remark
|
String
|
描述
|
create_time
|
Timestamp
|
创建时间
|
is_include_special_throttle
|
Integer
|
是否包含特殊流控配置:
|
type
|
Integer
|
流控策略的类型,取值如下:
|
bind_num
|
Integer
|
流控绑定的API数量
|
enable_adaptive_control
|
String
|
是否开启动态流控:
暂不支持
|
响应消息样例:
{
"id": "0325b671-2d50-4614-9868-22102262695d",
"name": "每秒800次",
"api_call_limits": 800,
"user_call_limits": 500,
"app_call_limits": 300,
"ip_call_limits": 600,
"time_interval": 1,
"time_unit": "SECOND",
"create_time": "2017-12-29T01:55:59.9904225Z",
"remark": "API每秒800次,用户500次,APP300次,IP600次",
"is_inclu_special_throttle": 2,
"type":1,
"bind_num": 0,
"enable_adaptive_control": "FALSE"
}
表 5 返回消息说明
状态码
|
说明
|
201
|
Created
|
400
|
Bad Request
|
401
|
Unauthorized
|
500
|
Server Internal Error
|