调用API
API提供者在API网关开放自己的API后,API调用者从API网关中调用API。
调用限制
- 如果您使用调试域名(创建API分组时系统分配的调试域名)访问API,该调试域名每天最多可以访问1000次。
- 如果在API网关控制台“API管理 > API策略 > SSL证书管理”界面的“创建SSL证书”窗口中设置了“CA”参数,那么在调用API时,请注意以下限制。
- 使用HTTP/1.0协议调用API时,不允许请求头中存在 "Transfer-Encoding"参数。
- 不允许使用CONNECT请求方法。
- 不允许请求头中同时存在参数"Content-Length"和"Transfer-Encoding"。
- 不允许请求行中存在空格或控制符。
- 不允许header name中存在空格或控制符。
- 不允许请求头"Host"中存在空格或控制符。
- 不允许请求头中存在多个"Host"。
前提条件
在调用API前,确保您的业务系统所在网络与API的访问域名或地址互通。
获取API的调用信息
在调用API前,您需要向API提供者获取API的调用信息。
- 获取API的请求信息
在API网关控制台选择“API管理 > API列表”,在“API列表”页签中可获取API的“域名”、“请求方法”和“请求路径”。单击API的名称进入“API运行”页面,在“前端配置”或“后端配置”区域获取API基本信息。
- 获取API的认证信息
根据API使用的安全认证方式不同,还要获取相关的请求认证信息:
认证方式
认证信息
APP认证(签名认证)
向API提供者获取该API所授权凭据的Key和Secret,以及认证签名所使用的SDK。
APP认证(简易认证)
向API提供者获取该API所授权凭据的AppCode。
APP认证(双重认证)
同时获取APP认证以及自定义认证所需的认证信息。
APP认证(app_api_key认证)
向API提供者获取该API所授权凭据的Key和Secret。
APP认证(app_secret认证)
向API提供者获取该API所授权凭据的Key和Secret。
APP认证(app_basic认证)
向API提供者获取该API所授权凭据的Key和Secret。
APP认证(app_jwt认证)
向API提供者获取该API所授权凭据的Key和Secret。
IAM认证(Token认证)
获取云服务平台的用户账号密码。
IAM认证(AK/SK认证)
获取云服务平台的用户账号的AK/SK,以及认证签名所使用的SDK。
IAM认证(双重认证)
同时获取IAM认证以及自定义认证所需的认证信息。
自定义认证
向API提供者获取请求参数中要携带的自定义认证信息。
无认证
无需认证信息。
第三方认证(API策略)
向API提供者获取请求参数中要携带的第三方认证信息。
调用API
本章节仅提供请求地址和认证参数的配置指导,客户端的其他参数配置需要用户自行调整,如超时配置、SSL配置等。如果客户端参数配置错误会导致业务受损,建议参考业界标准进行配置。
- 构造API请求,示例如下:
POST https://{Address}/{Path}?{Query} {Header} { {Body} }
- POST:请求方法,需替换为获取API的调用信息中获取的请求方法。
- {Address}:请求地址,需替换为获取API的调用信息中获取的域名地址。
API调用场景
API请求参数配置
使用域名调用API
使用服务分配的调试域名或服务绑定的域名调用API,无需另外配置。
使用IP调用DEFAULT分组的API
API允许使用IP地址调用DEFAULT分组下的API,无需另外配置。
使用IP调用非DEFAULT分组的API
- 使用IP地址直接调用非DEFAULT分组下的APP认证的API:
- 将实例的配置参数“app_route”和“app_secret”设置为“on”。开启“app_route”之后,同一凭据不能授权给相同请求路径和方法的API。
- 在请求消息中添加Header参数“X-HW-ID”和“X-HW-APPKEY”,参数值为API所授权凭据的Key和Secret。
须知:使用简易认证(APP认证)调用API时,仅需在请求消息中添加Header参数“X-Apig-AppCode”和“host”即可。
- 使用IP地址直接调用非DEFAULT分组下的非APP认证的API,需要在请求消息中添加Header参数“host”。
- 使用IP地址直接调用非DEFAULT分组下的APP认证的API:
- {Path}:请求路径,需替换为获取API的调用信息中获取的请求路径。
- {Query}:查询参数,可选,格式为“参数名=参数取值”,例如limit=10,多个查询参数之间使用“&”隔开。需根据获取API的调用信息中获取的请求参数进行设置。
- {Header}:请求头参数,格式为“参数名: 参数取值”,例如Content-Type: application/json。需根据获取API的调用信息中获取的请求参数进行设置。
- {Body}:请求消息体,JSON格式。需根据获取API的调用信息中获取的请求体内容描述进行设置。
- 为API请求添加认证信息。
API认证方式
API请求参数配置
APP认证(签名认证)
使用获取的SDK对API请求进行签名,具体请参考使用APP认证调用API。
APP认证(简易认证)
在API请求中添加Header参数“X-Apig-AppCode”,参数值为获取API的调用信息中获取到的AppCode。具体请参考快速入门。
APP认证(app_api_key认证)
- 实例的配置参数“app_api_key”已设置为“on”,开启app_api_key认证。
- 在API请求中添加Header或Query参数“apikey”,参数值为获取API的调用信息中获取到的Key。
APP认证(app_secret认证)
- 实例的配置参数“app_secret”已设置为“on”,开启app_secret认证,且“app_api_key”已设置为“off”,关闭app_api_key认证。
- 在API请求中添加Header参数“X-HW-ID”,参数值为获取API的调用信息中获取到的Key。
- 在API请求中添加Header参数“X-HW-AppKey”,参数值为获取API的调用信息中获取到的Secret。
APP认证(app_basic认证)
- 实例的配置参数“app_basic”已设置为“on”,开启app_basic认证。
- 在API请求中添加Header参数“Authorization”,参数值为"Basic"+base64(appkey+":"+appsecret),其中appkey和appsecret分别为获取API的调用信息中获取到的Key和Secret。
APP认证(app_jwt认证)
- 实例的配置参数“app_jwt”已设置为“on”,开启app_jwt认证。
- 在API请求中添加Header参数“Timestamp”,参数值为当前时间的Unix时间戳,单位为毫秒。
- 在API请求中添加Header参数“Authorization”,参数值为sha256(appkey+appsecret+timestamp),且sha256加密后的字符串需为小写字母。其中appkey和appsecret分别为获取API的调用信息中获取到的Key和Secret,timestamp为当前时间的Unix时间戳,单位为毫秒。
- 在API请求中添加Header参数“X-HW-ID”,参数值为获取API的调用信息中获取到的Key。
APP认证(双重认证)
在API请求中同时携带APP认证和自定义认证的认证信息。
IAM认证(Token认证)
先获取云服务平台的认证Token,然后在API请求中添加Header参数“X-Auth-Token”,参数值为认证Token,具体请参考Token认证。
IAM认证(AK/SK认证)
使用获取的SDK对API请求进行签名,具体请参考AK/SK认证。
IAM认证(双重认证)
在API请求中同时携带IAM认证和自定义认证的认证信息。
自定义认证
根据自定义认证的定义,在API请求参数中携带相关认证信息进行认证。
无认证
无需认证,可直接调用API。
第三方认证(API策略)
向API提供者获取请求参数中要携带的第三方认证信息。