
# 通过数据API开放数据
#### 前提条件
- 确保业务系统所在网络与ROMA Connect的网络互通。 若通过公网互通，ROMA Connect实例需绑定弹性IP。
  
- 确保业务系统的数据库为ROMA Connect支持的数据源类型。 数据API支持的数据源请参见[支持的数据与协议](https://support.huaweicloud.com/productdesc-roma/data-protocol-supported.html#section1)。
  
- 准备一个可用的独立域名，用于作为API的访问域名。 确保已完成独立域名到"服务集成APIC连接地址"的域名解析配置，具体请参考[添加公网域名解析记录](https://support.huaweicloud.com/usermanual-dns/dns_usermanual_0006.html)。
  若还没有独立域名，您可以通过域名注册商申请域名，并通过[备案中心](https://beian.huaweicloud.com/)完成域名备案。
  
- 如果数据API使用HTTPS请求协议，您还需要为独立域名申请SSL证书，并获取pem格式的SSL证书内容和密钥。
 
#### 业务系统开放数据API
1. 创建集成应用。 ROMA Connect实例中的资源都要归属到某个集成应用下，在创建其他资源前，您需要确保有一个集成应用。若已有可用的集成应用，可跳过此步骤。
   1. 登录[ROMA Connect控制台](https://console.huaweicloud.com/roma3)，在左侧导航栏选择"资源管理"，在实例页面单击实例，进入实例控制台。
   
   2. 在左侧的导航栏选择"集成应用"，单击页面右上角的"创建集成应用"。
   
   3. 在创建集成应用弹窗中填写集成应用的"名称"，然后单击"确认"。
    
2. 接入数据源。
   配置ROMA Connect接入业务系统的数据库，确保可以正常从数据库读取数据。不同类型数据源的接入配置不同，此处以MySQL数据库为例，其他类型数据库请参考[接入数据源](https://support.huaweicloud.com/usermanual-roma/roma_03_2117.html)。
   1. 在左侧的导航栏选择"数据源管理"，单击页面右上角的"接入数据源"。
   
   2. 在接入数据源页面的"默认数据源"页签下，选择"MySQL"数据源，然后单击"下一步"。
   
   3. 在页面中配置数据源的连接信息。
      表1数据源连接信息 
      | 参数    | 配置说明                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
      |:---|:---|
      | 数据源名称 | 填写数据源的名称，根据规划自定义。建议您按照一定的命名规则填写数据源名称，方便您快速识别和查找。                                                                                                                                                                                                                                                                                                                                                                                                           |
      | 集成应用  | 选择数据源所归属的集成应用。                                                                                                                                                                                                                                                                                                                                                                                                                                             |
      | 描述    | 单击"![](https://support.huaweicloud.com/bestpractice-roma/zh-cn_image_0000001152832785.png)"，编辑数据源的描述信息。                                                                                                                                                                                                                                                                                                                                                    |
      | 连接模式  | 选择连接数据库模式。 - 默认：由系统根据用户配置自动拼接数据源的连接字符串。  - 专业：由用户自己输入JDBC格式的数据源连接字符串。                                                                                                                                                                                          |
      | 连接地址  | **仅当"连接模式"选择"默认"时需要配置。** 填写数据库的连接IP地址和端口号。                                                                                                                                                                                                                                                                                                                                                                                 |
      | 数据库名  | **仅当"连接模式"选择"默认"时需要配置。** 填写要接入的数据库名。                                                                                                                                                                                                                                                                                                                                                                                          |
      | 编码格式  | **仅当"连接模式"选择"默认"时可配置。** 数据库所使用的编码格式。                                                                                                                                                                                                                                                                                                                                                                                         |
      | 超时时间  | **仅当"连接模式"选择"默认"时可配置。** 连接数据库的超时时间，单位为秒。                                                                                                                                                                                                                                                                                                                                                                                     |
      | 连接字符串 | **仅当"连接模式"选择"专业"时需要配置。** 填写MySQL数据库的JDBC格式连接串，例如：jdbc:mysql://{hostname}:{port}/{dbname}。 - {hostname}为数据库的连接地址。  - {port}为数据库的连接端口号。  - {dbname}为要接入的数据库名。   |
      | 用户名   | 填写连接数据库的用户名。                                                                                                                                                                                                                                                                                                                                                                                                                                               |
      | 密码    | 填写连接数据库的用户密码。                                                                                                                                                                                                                                                                                                                                                                                                                                              |
         
      
   
   4. 完成数据源参数配置后，单击"开始检测"，进行数据源的连接测试。
      - 若测试结果为"数据源连接成功！"，则继续下一步。
      
      - 若测试结果为"数据源连接失败！"，则检查和修改数据源连接参数配置，然后单击"重新检测"，直到连接成功为止。
       
   
   5. 单击"创建"，完成数据源的接入。
     
3. 创建数据后端。
   通过自定义后端，把业务系统的数据转换为一个后端服务。
   1. 在左侧的导航栏选择"服务集成 APIC \> 自定义后端"，在"后端列表"页签中单击"创建后端"。
   
   2. 在创建后端页面配置后端信息，完成后单击"立即创建"。
      表2后端请求配置 
      | 参数     | 配置说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
      |:---|:---|
      | 后端名称   | 填写后端的名称，根据规划自定义。建议您按照一定的命名规则填写后端名称，方便您快速识别和查找。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
      | 集成应用   | 选择后端所属的集成应用。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
      | 后端请求方法 | 选择后端的请求方法，可选择"GET"、"POST"、"PUT"和"DELETE"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
      | 后端请求路径 | 填写后端的请求路径，格式如：/getUserInfo/userId。 请求路径中的内容区分大小写。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
      | 后端安全认证 | 选择后端的安全认证方式。 - 签名密钥：表示使用签名密钥的方式，对请求发送方进行认证。若使用签名密钥进行认证，调用该后端服务的API，也需要绑定相同的签名密钥。  - 无认证：表示不对调用请求进行认证。                                                                                                                                                                                                                                                                                                                                            |
      | 描述     | 填写后端的描述信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
      | 高级设置                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ||
      | 版本号    | 填写后端的版本号，自定义，用于区分不同版本的后端服务，如V1.0。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
      | 入参定义   | 根据实际需要定义后端服务的请求参数。 在"入参定义"下单击"新增入参定义"，添加自定义后端的请求参数。 - 名称：请求参数的名称，自定义。  - 参数位置：请求参数在后端服务请求中的位置，可选择"Headers"和"Parameters"。  - 测试界面默认值：仅用于后续的自定义后端测试步骤，作为参数的默认测试值。在自定义后端部署时不生效。  - 必填：在后端服务请求中，请求参数是否必填。  - 描述：填写参数的描述信息。   |
      | 返回类型   | 选择后端的响应数据格式，可选择"JSON"、"XML"和"STREAM"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
      | 是否格式化  | 是否将响应消息体按选择的返回类型进行格式化。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
         
      后端创建完成后，页面自动跳转到该后端的编辑器页面，后端类型默认为数据后端。
      
   
   3. 在编辑器页面左侧单击"文件\>新建数据后端\>添加数据源"。
   
   4. 在添加数据源弹窗中配置数据源信息，完成后单击"立即添加"。
      表3数据源配置 
      | 参数       | 配置说明                                                                                                                |
      |:---|:---|
      | 选择数据源    | 选择[接入数据源]中已创建的数据源。                                                                 |
      | 选择执行语句类型 | 选择执行语句的类型，可选择"SQL"和"SP"（Stored Procedure）。 如果是Redis或MongoDB数据源，选择"SQL"，实际执行语句为NoSQL。 |
      | 高级设置                                                                                                                          ||
      | 返回对象     | 填写返回对象的名称，执行语句的执行结果将封装在该对象中返回。                                                                                      |
      | 结果分页选项   | 执行语句的执行结果是否分页返回。 若同一个数据后端添加多个数据源时，不支持配置"结果分页选项"。                                      |
      | 预编译      | 是否对执行语句进行预编译，可以防止SQL注入风险。                                                                                           |
         
      
   
   5. 添加数据源后，在编辑器左侧选择数据源，然后您可以在右侧的语句编辑框中添加执行语句，通过执行语句获取要返回的数据。
      - 数据后端支持标准SQL语法，部分语法差异请参见[自定义后端开发（数据后端）](https://support.huaweicloud.com/devg-roma/apic-dev-190514002.html)。
      
      - 如果是Redis或MongoDB数据源，实际为Redis或MongoDB的数据处理命令。
      
      
      ![](https://support.huaweicloud.com/bestpractice-roma/public_sys-resources/note_3.0-zh-cn.png)
      若在SQL语句中同时引用多种数据类型的后端请求参数时，系统会默认把传入的参数转换为String类型。因此在执行SQL语句时，需要调用相应的函数对非String类型参数进行数据类型转换。
      
   
   6. 完成后在页面右上角单击"保存"，保存数据后端配置。
   
   7. 测试后端功能。 在页面右上角单击"测试"，在下方的"测试参数"处，根据后端服务的定义添加请求参数，然后单击"立即测试"，发送请求。在"执行结果"栏查看后端的响应是否返回所期望的数据。
      
   
   8. 后端测试完成后，在页面右上角单击"部署"，在确认弹窗中单击"确定"，部署后端服务。
     
4. 发布数据API。
   把数据后端发布为数据API并部署到环境中，即可供其他业务系统调用。
   1. 在页面右上角单击"发布"。
   
   2. 在发布弹窗中配置前端API的相关信息，完成后单击"立即发布"，为该后端创建一个对应的前端API，并发布到环境上。
      API发布完成后，自动跳转到对应前端API的API运行页面。
      表4发布配置 
      | 参数         | 配置说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
      |:---|:---|
      | 所属分组       | 选择前端API所属的API分组。若没有可用的API分组，可单击右侧的"创建分组"，创建一个API分组。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
      | 发布环境       | 选择前端API要发布的环境，对外正式开放API时，应选择默认环境"RELEASE"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
      | 前端安全认证     | 选择前端API的安全认证方式，推荐使用APP认证方式。 - APP认证：表示由ROMA Connect对API请求进行安全认证。用户调用API时，使用集成应用的Key和Secret进行API请求的安全认证。  - 华为IAM认证：表示由IAM对API请求进行安全认证。用户调用API时，使用Token或AK/SK进行API请求的安全认证。  - 自定义认证：表示使用自定义的函数API对API请求进行安全认证。  - 无认证：表示API请求不需要认证。   |
      | 自定义认证      | **仅当"前端安全认证"选择"自定义认证"时需要配置。** 选择已创建的前端类型自定义认证。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
      | 前端请求协议     | 选择前端API使用的请求协议，可选择"HTTP"、"HTTPS"和"HTTP\&HTTPS"，传输重要或敏感数据时推荐使用HTTPS。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
      | 后端超时 (ms)  | 后端服务请求的超时时间，默认为60000ms。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
      | 重试次数       | ROMA Connect调用后端服务失败后的重试次数。 - 值为-1时，表示不开启重试功能。  - 值为0-10时，表示开启重试功能，并根据设置的值执行重试。                                                                                                                                                                                                                                                                                            |
      | 高级设置                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ||
      | 前端请求方法     | 选择前端API的请求方法。"ANY"表示该API支持任意请求方法，用于获取数据库数据的API一般使用GET方法即可。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
      | 前端请求路径     | 填写前端API的请求路径，格式如：/getUserInfo/userId。 请求路径中的内容区分大小写。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
      | 支持跨域(CORS) | 是否支持跨域访问API。 浏览器出于安全性考虑，限制从页面脚本内发起的跨域请求，此时页面只能访问同源的资源。而CORS允许浏览器向跨域服务器发送XMLHttpRequest请求，从而实现跨域访问。跨域访问API请参见[配置跨域访问API](https://support.huaweicloud.com/usermanual-roma/roma_03_2124.html)。                                                                                                                                                                                                                                                                                                                                           |
         
      
     
5. 为数据API绑定独立域名。
   1. 在页面左上角选择"分组信息"，在"域名管理"下单击"绑定独立域名"。
   
   2. 在绑定独立域名弹窗中填写域名配置信息，完成后单击"确定"。
      表5独立域名配置 
      | 参数                   | 配置说明                                                                                                                                                                                                                             |
      |:---|:---|
      | 域名                   | 填写要绑定的域名。                                                                                                                                                                                                                        |
      | 支持最小TLS版本            | 选择域名访问所使用的最小TLS版本。                                                                                                                                                                                                               |
      | 支持http to https自动重定向 | 是否支持HTTP到HTTPS的重定向。 仅当API的请求协议选择"HTTPS"或"HTTP\&HTTPS"，且独立域名已绑定SSL证书时重定向生效。 说明： 由于浏览器限制，非GET或非HEAD方法的重定向可能导致数据丢失，因此API请求方法限定为GET或HEAD。 |
         
      
   
   3. （可选）如果数据API支持HTTPS请求协议，则需要为独立域名绑定SSL证书。否则跳过此步骤。
      1. 在已绑定的独立域名右侧单击"选择SSL证书"。
      
      2. 在选择SSL证书弹窗中勾选要绑定的SSL证书，完成后单击"确定"，完成SSL证书的绑定。 若证书列表中无可用的SSL证书，可单击"创建SSL证书"，新增SSL证书。
         
       
    
 
#### 其他业务系统调用API
1. 向API提供方获取API的调用信息。
   - 获取API的请求信息。 API提供方可在ROMA Connect控制台选择"服务集成 APIC \> API列表"，在列表中单击API的名称进入API运行页面，在页面中可获取API的请求方法和URL，在"前端配置"页签下，可获取API的请求参数。
     
   
   - 获取API的认证信息。
     根据API的安全认证方式不同，需要获取不同的认证信息。
     - APP认证：
       - 签名认证：向API提供方获取该API所授权凭据的Key和Secret，以及用于调用API的SDK。
       
       - 简易认证：向API提供方获取该API所授权凭据的AppCode。
       
       - 其他认证：向API提供方获取该API所授权凭据的Key和Secret。
        
     
     - 华为IAM认证：通过云服务平台的账号凭证（账号密码或者AK/SK）进行认证。如果使用AK/SK进行认证，还需要向API提供方获取用于调用API的SDK。
     
     - 自定义认证：向API提供方获取请求参数中要携带的自定义认证信息。
     
     - 无认证：无需认证信息。
       
    
2. 根据获取的API调用信息，拼接并发送API请求，获取所需数据。
 
