更新时间:2022-12-05 GMT+08:00

配置示例

前提条件

  • 已获取IAM和ROMA Connect服务所在区域的Endpoint地址。
  • 已获取ROMA Connect实例的实例ID,以及实例所在区域的项目ID。
  • 在调用ROMA Connect的接口时,需要为调用请求添加认证信息。有Token认证和AK/SK认证两种认证方式,您可以选择其中一种进行认证鉴权,具体操作请参见认证鉴权。推荐使用AK/SK认证,其安全性比Token认证要高。

获取集成应用ID

在ROMA Connect实例中创建的资源(如数据源、API等)都要归属到某个集成应用下,在创建资源前需要获取资源所归属的集成应用ID。

  • 如果有可用的集成应用,则调用“查询应用列表”接口,获取集成应用ID。
    请求示例:
    GET /v2/{project_id}/instances/{instance_id}/apps

    其中加粗部分需要根据接口参数说明,替换为实际的数据值。

    响应示例:

    {
       "total" : 1,
       "size" : 1,
       "apps" : [ {
         "id" : "b2e6b145********f4b8029f95a3",
         "name" : "AppName",
         "remark" : "example"
       } ],
        ...
    }

    响应消息中“apps”的值为查询到的集成应用信息列表,找到要使用的集成应用,其中“id”的值即为集成应用ID,保存并留待后续步骤使用。

  • 如果没有可用的集成应用,则调用“创建应用”接口,创建一个集成应用并获取集成应用ID。
    请求示例:
    POST /v2/{project_id}/instances/{instance_id}/apps
    
    {
      "name" : "AppName",
      "key" : "xxxxxx",
      "secret" : "******"
    }

    其中加粗部分需要根据接口参数说明,替换为实际的数据值。

    响应示例:

    {
       "id" : "b2e6b145********f4b8029f95a3",
       "name" : "AppName",
       "remark" : "example",
        ...
    }

    响应消息中“id”的值即为集成应用ID,保存并留待后续步骤使用。

接入数据源

调用“创建数据源”接口,接入需要开放数据的数据库,并获取返回的数据源ID。此处以MySQL数据库为例进行说明,其他类型数据库请参考接口的参数说明。

请求示例:

POST /v2/{project_id}/fdi/instances/{instance_id}/datasources

{
   "datasource_name" : "fdi_ds_mysql",
   "datasource_type" : "MYSQL",
   "content" : {
     "host" : "10.10.10.10",
     "port" : "3306",
     "database_name" : "romatest",
     "user_name" : "romatest",
     "password" : "******",
     "mode" : "default"
   },
   "app_id" : "xxxxxx",
   "description" : "test"
}

其中加粗部分需要根据接口参数说明,替换为实际的数据值。xxxxxx获取集成应用ID中获取并保存的集成应用ID。

响应示例:

{
   "datasource_id" : "0fd3669d********ed3160ed051",
   "datasource_name" : "fdi_ds_api_v2",
   "datasource_type" : "API",
    ...
}

响应消息中“datasource_id”的值即为数据源ID,保存并留待后续步骤使用。

创建数据后端

通过创建数据后端,把要开放的数据库转换为API的后端服务。

  1. 调用“创建后端API”接口,创建一个自定义后端,并获取返回的后端API编号。
    请求示例:
    POST /v2/{project_id}/apic/instances/{instance_id}/livedata-apis
    
    {
       "name" : "data_api_demo",
       "path" : "/data/test",
       "method" : "GET",
       "roma_app_id" : "xxxxxx",
       "version" : "1.0",
       "content_type" : "json",
       "return_format" : false,
       "parameters" : [
          {
             "name" : "param1",
             "in" : "Parameters",
             "required" : true
          } 
       ]
    }

    其中加粗部分需要根据接口参数说明,替换为实际的数据值。xxxxxx获取集成应用ID中获取并保存的集成应用ID。“parameters”下可根据实际需要设置多个后端请求参数,或不设置请求参数。

    响应示例:

    {
       "id" : "bd42841c********c6d8a06e37",
       "name" : "data_backend",
       "roma_app_id" : "98df09fb********2b55ca6f3d5d",
       "content_type" : "json",
        ...
    }

    响应消息中“id”的值即为后端API编号,保存并留待后续步骤使用。

  2. 调用“创建后端API脚本”接口,配置数据后端。
    请求示例:
    POST /v2/{project_id}/apic/instances/{instance_id}/livedata-apis/{ld_api_id}/scripts
    
    {
       "api_type" : "data",
       "scripts" : [ 
          {
             "ds_id" : "xxxxxx",
             "type" : "SQL",
             "object_name" : "data",
             "content" : "ZnVuY3Rpb24g******cmxkISIKfQ=="
          }
       ]
    }

    其中加粗部分需要根据接口参数说明,替换为实际的数据值。{ld_api_id}创建自定义后端时获取并保存的后端API编号,xxxxxx接入数据源中获取并保存的数据源ID。

获取API分组ID

API分组是同一类业务API的集合,每个API都要归属到某个API分组下,在发布数据API前需要获取API所归属的API分组ID。

API只有在发布到环境后,才能被外部用户调用,在发布数据API前需要获取API要发布的环境ID。
  • 如果有可用的API分组,则调用“查询分组列表”接口,获取分组ID。
    请求示例:
    GET /v2/{project_id}/apic/instances/{instance_id}/api-groups

    其中加粗部分需要根据接口参数说明,替换为实际的数据值。

    响应示例:

    {
       "total" : 2,
       "size" : 2,
       "groups" : [ {
         "name" : "api_group_001",
         "id" : "c77f5e81d********ef2b0ac7600",
         "remark" : "group1",
          ...
       },
       ...
      ] 
    }

    响应消息中“groups”的值为查询到的API分组列表,找到要使用的API分组,其中“id”的值即为API分组ID,保存并留待后续步骤使用。

  • 如果没有可用的API分组,则调用“创建API分组”接口,创建一个API分组并获取分组ID。
    请求示例:
    POST /v2/{project_id}/apic/instances/{instance_id}/api-groups
    
    {
       "name" : "api_group_001",
       "version" : "V2",
       "roma_app_id" : "xxxxxx"
    }

    其中加粗部分需要根据接口参数说明,替换为实际的数据值。xxxxxx获取集成应用ID中获取并保存的集成应用ID。

    响应示例:

    {
       "name" : "api_group_001",
       "id" : "c77f5e81d********ef2b0ac7600",
       "remark" : "group1",
        ...
    }

    响应消息中“id”的值即为API分组ID,保存并留待后续步骤使用。

部署并发布数据API

  1. 调用“部署后端API”接口,部署数据后端并发布一个数据API,获取返回的前端数据API编号。

    请求示例:

    POST /v2/{project_id}/apic/instances/{instance_id}/livedata-apis/{ld_api_id}/deploy
    
    {
       "deploy_front_api" : true,
       "roma_app_id" : "xxxxxx"
       "auth_type" : "APP",
       "group_id" : "yyyyyy",
       "env_id" : "DEFAULT_ENVIRONMENT_RELEASE_ID",
       "method" : "GET",
       "path" : "/data/test",
       "protocol" : "HTTPS",
       "backend_timeout" : 5000,
       "cors": false
    }

    其中加粗部分需要根据接口参数说明,替换为实际的数据值。{ld_api_id}创建数据后端时获取并保存的后端API编号,xxxxxx获取集成应用ID中获取并保存的集成应用ID,yyyyyy获取API分组ID中获取并保存的API分组ID。

    响应示例:

    {
       "id" : "5e19590f54444d8a9b8fe698ce26e9fe",
       "deploy_time" : "2020-09-19T06:58:13Z",
       "api_id" : "1d0432f1a********ae7bd96ca6",
       "env_id" : "DEFAULT_ENVIRONMENT_RELEASE_ID",
        ...
    }

    响应消息中“api_id”的值即为前端数据API的编号,保存并留待后续步骤使用。

  2. (可选)在发布数据API时无法为数据API添加请求参数,若需要为数据API添加请求参数,则调用“修改API”接口为数据API添加请求参数。

    请求示例:

    PUT /v2/{project_id}/apic/instances/{instance_id}/apis/{api_id}
    
    {
       "name": "Data_API",
       "type": 1,
       "req_protocol": "HTTPS",
       "req_method": "GET",
       "req_uri": "/data/test",
       "auth_type": "APP",
       "backend_type": "HTTP",
       "group_id": "c77f5e81d********ef2b0ac7600",
       "req_params": [
           {
               "name": "param01",
               "type": "STRING",
               "location": "QUERY"
           }
       ],
    }

    其中加粗部分需要根据接口参数说明,替换为实际的数据值。{api_id}发布数据API时获取并保存的前端数据API编号,“req_protocol”、“req_method”、“req_uri”、“auth_type”、“group_id”需与发布数据API时设置的值保持一致。“parameters”下可根据实际需要设置多个后端请求参数,或不设置请求参数。

为数据API绑定独立域名

开放的API需要绑定独立域名,用户通过独立域名访问API。

  1. 调用“绑定域名”接口,为数据API绑定一个独立域名,并获取返回的域名编号。
    请求示例:
    POST /v2/{project_id}/apic/instances/{instance_id}/api-groups/{group_id}/domains
    
    {
       "url_domain" : "www.example.com"
    }

    其中加粗部分需要根据接口参数说明,替换为实际的数据值。{group_id}获取API分组ID中获取并保存的API分组ID。

    响应示例:

    {
       "url_domain" : "www.example.com",
       "id" : "c5e0d5ba********ae22c1a17",
       "status" : 3,
       "min_ssl_version" : "TLSv1.1"
    }

    响应消息中“id”的值即为域名编号,保存并留待后续步骤使用。

  2. (可选)若部署并发布数据API时配置了使用HTTPS协议,则需要调用“绑定域名证书”接口为独立域名添加SSL证书。
    请求示例:
    POST /v2/{project_id}/apic/instances/{instance_id}/api-groups/{group_id}/domains/{domain_id}/certificate
    
    {
       "name" : "cert_demo",
       "private_key" : "-----Start certificate----********-----End certificate-----",
       "cert_content" : "-----Start RSA private key----- ********-----End RSA private key-----"
    }

    其中加粗部分需要根据接口参数说明,替换为实际的数据值。{group_id}获取API分组ID中获取并保存的API分组ID,{domain_id}绑定独立域名时获取并保存的域名编号。

获取数据API的调用信息

调用“查询API详情”接口,查看并保存API的调用信息,包括API的请求协议、请求方式、请求路径、访问域名、请求参数和认证方式。

请求示例:

GET /v2/{project_id}/apic/instances/{instance_id}/apis/{api_id}

其中加粗部分需要根据接口参数说明,替换为实际的数据值。{api_id}部署并发布数据API中获取并保存的前端数据API编号。

响应示例:

{
   "name": "API_test",
   "type": 1,
   "version": "V1.0",
   "req_protocol": "HTTP",
   "req_method": "GET",
   "req_uri": "/api/demo",
   "auth_type": "APP",
    ...
   "domain_name": "www.example.com",
    ...
   "req_params": [],
    ...
}

响应消息中,“req_protocol”为请求协议,“req_method”为请求方式,“req_uri”为请求路径,“domain_name”为访问域名,“req_params”为请求参数信息,“auth_type”为认证方式。

把API调用信息提供给其他用户,其他用户通过调用数据API,获取开放的业务数据。不同的API认证方式,调用数据API的操作有所不同,具体请参考调用开放的API