文档首页/ API网关 APIG/ 用户指南/ 调用API/ 调用APIG开放的API
更新时间:2024-12-02 GMT+08:00

调用APIG开放的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网关在相同VPC内时,可直接访问API。
  • 如果业务系统与API网关在同一区域的不同VPC内时,可通过创建VPC对等连接,将两个VPC的网络打通,实现同一区域跨VPC访问API。具体步骤请参考VPC对等连接说明
  • 如果业务系统与API网关在不同区域的不同VPC内时,可通过创建云连接实例并加载需要互通的VPC,将两个VPC的网络打通,实现跨区域跨VPC访问API。具体步骤请参考跨区域VPC互通
  • 如果业务系统与API网关通过公网互通,请确保API网关已绑定弹性IP。

获取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提供者获取请求参数中要携带的第三方认证信息。

    • 获取凭据的Key和Secret:

      在API网关控制台选择“API管理 > 凭据管理”,在凭据列表中单击API所授权凭据的名称,进入凭据详情页面,获取凭据的Key和Secret。

    • 获取认证签名所使用SDK:

      在API网关控制台选择“帮助中心”,在“SDK使用指引”页签中下载对应语言所使用SDK。

    • 获取AppCode:

      在API网关控制台选择“API管理 > 凭据管理”,在凭据列表中单击API所授权凭据的名称,进入凭据详情页面,在“AppCodes”区域中获取AppCode。

调用API

本章节仅提供请求地址和认证参数的配置指导,客户端的其他参数配置需要用户自行调整,如超时配置、SSL配置等。如果客户端参数配置错误会导致业务受损,建议参考业界标准进行配置。

API调用支持长连接。但是需要适当使用长连接,避免占用太多资源。

  1. 构造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:
        1. 将实例的配置参数“app_route”和“app_secret”设置为“on”。开启“app_route”之后,同一凭据不能授权给相同请求路径和方法的API。
        2. 在请求消息中添加Header参数“X-HW-ID”和“X-HW-APPKEY”,参数值为API所授权凭据的Key和Secret。
        须知:

        使用简易认证(APP认证)调用API时,仅需在请求消息中添加Header参数“X-Apig-AppCode”和“host”即可。

      • 使用IP地址直接调用非DEFAULT分组下的非APP认证的API,需要在请求消息中添加Header参数“host”。
    • {Path}:请求路径,需替换为获取API的调用信息中获取的请求路径。
    • {Query}:查询参数,可选,格式为“参数名=参数取值”,例如limit=10,多个查询参数之间使用“&”隔开。需根据获取API的调用信息中获取的请求参数进行设置。
    • {Header}:请求头参数,格式为“参数名: 参数取值”,例如Content-Type: application/json。需根据获取API的调用信息中获取的请求参数进行设置。
    • {Body}:请求消息体,JSON格式。需根据获取API的调用信息中获取的请求体内容描述进行设置。
  1. 为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提供者获取请求参数中要携带的第三方认证信息。