
# 直接调用APIC开放的API
API在发布到环境后，即支持被其他用户调用。根据API所使用的安全认证方式不同，调用API的操作有所差异。
#### 约束与限制
- 若您使用系统分配的默认子域名访问API，该子域名每天最多可以访问1000次。
- 如果两个API的所属分组、请求方法和请求路径都相同，则调用API时，会优先调用匹配模式为绝对匹配的API。
- Site实例不支持使用子域名调用API，仅支持使用IP+Host头方式调用API。
- Site实例中不支持华为IAM认证。
 
#### 前提条件
在调用API前，确保您的业务系统所在网络与API的访问域名或地址互通。
- 若业务系统与ROMA Connect实例在相同VPC内时，可直接访问API。
- 若业务系统与ROMA Connect实例在同一区域的不同VPC内时，可通过创建VPC对等连接，将两个VPC的网络打通，实现同一区域跨VPC访问API。具体步骤请参考[VPC对等连接说明](https://support.huaweicloud.com/usermanual-vpc/vpc_peering_0000.html)。
- 若业务系统与ROMA Connect实例在不同区域的不同VPC内时，可通过创建云连接实例并加载需要互通的VPC，将两个VPC的网络打通，实现跨区域跨VPC访问API。具体步骤请参考[跨区域VPC互通](https://support.huaweicloud.com/qs-cc/cc_02_0201.html)。
- 若业务系统与ROMA Connect实例通过公网互通，请确保ROMA Connect实例已绑定弹性IP。
 
#### 获取API的调用信息
在调用API前，您需要从API提供方获取API的调用信息。
- 获取API的请求信息
  在ROMA Connect实例控制台选择"服务集成 APIC \> API列表"，在页面中获取API的"域名"、"请求方法"和"API URL"。单击API的名称进入API详情页面，在"前端配置"页签下，获取API的"请求参数"和"请求体内容描述"。
  
- 获取API的认证信息
  根据API使用的安全认证方式不同，还要获取相关的请求认证信息：
  
  | 认证方式                | 认证信息                                         |
  |:---|:---|
  | APP认证（签名认证）         | 向API提供方获取该API所授权凭据的Key和Secret，以及认证签名所使用的SDK。 |
  | APP认证（简易认证）         | 向API提供方获取该API所授权凭据的AppCode。                  |
  | APP认证（绿色通道白名单）      | 向API提供方获取该API所授权凭据的Key。                      |
  | APP认证（app_secret认证） | 向API提供方获取该API所授权凭据的Key和Secret。               |
  | APP认证（app_basic认证）  | 向API提供方获取该API所授权凭据的Key和Secret。               |
  | APP认证（双重认证）         | 同时获取APP认证以及自定义认证所需的认证信息。                     |
  | IAM认证（Token认证）      | 获取云服务平台的用户账号密码。                              |
  | IAM认证（AK/SK认证）      | 获取云服务平台的用户账号的AK/SK，以及认证签名所使用的SDK。            |
  | IAM认证（双重认证）         | 同时获取IAM认证以及自定义认证所需的认证信息。                     |
  | 自定义认证               | 向API提供方获取请求参数中要携带的自定义认证信息。                   |
  | 无认证                 | 无需认证信息。                                      |
     
  - 获取凭据的Key和Secret： 在ROMA Connect实例控制台选择"服务集成 APIC \> 凭据管理"，在"凭据管理"页签中单击API所授权凭据的名称，进入凭据详情页面，在页面中获取凭据的Key和Secret。
    
  
  - 获取认证签名所使用SDK： 在ROMA Connect实例控制台选择"服务集成 APIC \> 凭据管理"，在"SDKs"页签中下载对应语言所使用SDK。
    
  
  - 获取AppCode： 在ROMA Connect实例控制台选择"服务集成 APIC \> 凭据管理"，在"凭据管理"页签中单击API所授权凭据的名称，进入凭据详情页面，在"AppCodes"下获取AppCode。
    
   
 
#### 调用API
本章节仅提供请求地址和认证参数的配置指导，客户端的其他参数配置需要用户自行调整，如超时配置、SSL配置等。如果客户端参数配置错误会导致业务受损，建议参考业界标准进行配置。
![](https://support.huaweicloud.com/usermanual-roma/public_sys-resources/note_3.0-zh-cn.png)
API调用支持长连接。但是需要适当使用长连接，避免占用太多资源。
1. 构造API请求，示例如下：
   ```
   POST https://{Address}/{Path}?{Query}
   {Header}
   {
     {Body}
   }
   ```
   - **POST** ：请求方法，需替换为[获取API的请求信息]中获取的请求方法。
   
   - **{Address}** ：请求地址，需替换为[获取API的请求信息]中获取的域名地址。您也可以使用IP地址访问API，
     
     | API调用场景              | API请求参数配置                                                                                                                                                                                                                                                                                                                                                                                                              |
     |:---|:---|
     | 使用域名调用API            | ROMA Connect允许使用分组分配的子域名或分组绑定的域名调用API，无需另外配置。                                                                                                                                                                                                                                                                                                                                                                          |
     | 使用IP调用DEFAULT分组的API  | ROMA Connect允许使用IP地址调用DEFAULT分组下的API，无需另外配置。                                                                                                                                                                                                                                                                                                                                                                           |
     | 使用IP调用非DEFAULT分组的API | - ROMA Connect的实例[配置参数](https://support.huaweicloud.com/usermanual-roma/roma_03_0012.html#roma_03_0012__section1761015407190)"app_route"已设置为"on"，允许通过IP访问API。  - ROMA Connect不允许使用IP地址直接调用非DEFAULT分组下的API，需要在请求消息中添加Header参数"X-HW-ID"，参数值为API所授权凭据的Key。   |
        
     
   
   - **{Path}** ：请求路径，需替换为[获取API的请求信息]中获取的URL。
   
   - **{Query}** ：查询参数，可选，格式为"参数名=参数取值"，例如limit=10，多个查询参数之间使用"**\&** "隔开。需根据[获取API的请求信息]中获取的请求参数进行设置。
   
   - **{Header}** ：请求头参数，格式为"参数名: 参数取值"，例如Content-Type: application/json。需根据[获取API的请求信息]中获取的请求参数进行设置。
   
   - **{Body}** ：请求消息体，JSON格式。需根据[获取API的请求信息]中获取的请求体内容描述进行设置。
    

2. 为API请求添加认证信息。
   ![](https://support.huaweicloud.com/usermanual-roma/public_sys-resources/notice_3.0-zh-cn.png)
   Site实例中不支持华为IAM认证。
   
   | API认证方式             | API请求参数配置                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   |:---|:---|
   | APP认证（签名认证）         | 使用获取的SDK对API请求进行签名，具体请参考[APP认证开发](https://support.huaweicloud.com/devg-roma/apic-dev-190216005.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | APP认证（简易认证）         | 在API请求中添加Header参数"X-Apig-AppCode"，参数值为[获取API的认证信息]中获取到的AppCode。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | APP认证（绿色通道白名单）      | 在API请求中添加Header参数"X-HW-ID"，参数值为[获取API的认证信息]中获取到的Key。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | APP认证（app_secret认证） | - ROMA Connect的实例[配置参数](https://support.huaweicloud.com/usermanual-roma/roma_03_0012.html#roma_03_0012__section1761015407190)"app_secret"已设置为"on"，开启app_secret认证。  - 在API请求中添加Header参数"X-HW-ID"，参数值为[获取API的认证信息]中获取到的Key。  - 在API请求中添加Header参数"X-HW-AppKey"，参数值为[获取API的认证信息]中获取到的Secret。   |
   | APP认证（app_basic认证）  | - ROMA Connect的实例[配置参数](https://support.huaweicloud.com/usermanual-roma/roma_03_0012.html#roma_03_0012__section1761015407190)"app_basic"已设置为"on"，开启app_basic认证。  - 在API请求中添加Header参数"Authorization"，参数值为"Basic "+base64(**appkey** +":"+**appsecret** )，其中**appkey** 和**appsecret** 分别为[获取API的认证信息]中获取到的Key和Secret。                                                                    |
   | APP认证（双重认证）         | 在API请求中同时携带APP认证和自定义认证的认证信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | IAM认证（Token认证）      | 先获取云服务平台的认证Token，然后在API请求中添加Header参数"X-Auth-Token"，参数值为认证Token，具体请参考[IAM认证开发（Token）](https://support.huaweicloud.com/devg-roma/apic-dev-190216017.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | IAM认证（AK/SK认证）      | 使用获取的SDK对API请求进行签名，具体请参考[IAM认证开发（AK/SK）](https://support.huaweicloud.com/devg-roma/apic-dev-190216018.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | IAM认证（双重认证）         | 在API请求中同时携带IAM认证和自定义认证的认证信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | 自定义认证               | 根据自定义认证的定义，在API请求参数中携带相关认证信息进行认证。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | 无认证                 | 无需认证，可直接调用API。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
      
   
 
