Dataphin开放平台提供OpenAPI能力,通过调用Dataphin的OpenAPI使用Dataphin的各项功能,实现应用和Dataphin的集成和交互。
前提条件
需购买OpenAPI功能。
权限说明
建议使用超级管理员调用AccessKey、SecretKey,便于业务集成。
使用限制
支持Java SDK调用OpenAPI,Python及其他语言版本暂不支持。
步骤一:OpenAPI使用准备
在Dataphin页面,单击右上角的头像打开用户中心,单击个人账号。
在左侧导航栏选择API访问 > AccessKey管理,进入AccessKey管理页面,获取调用地址、AccessKey、SecretKey等信息。
调用地址:服务器接入点信息(即域名),Dataphin 4.1版本之前未展示该信息,请联系运维部署团队获取。
AccessKey/SecretKey:在AccessKey列表区域,单击新建AccessKey按钮,获取AccessKey/SecretKey。
请及时下载AccessKey文件,对话框关闭后将无法再次获取AccessKey Secret。
OpTenantId:即租户ID,可在Dataphin界面浏览器地址栏中获取。例如:
https://dataphin.example.com/home/?tenantId=123456
,其中tenantId的值即为OpTenantId,tenantId的值为123456,因为项目不会轻易变更,可以作为常量或配置项保存。
步骤二:使用OpenAPI SDK
获取OpenAPI SDK
在AccessKey管理页面,单击下载OpenAPI SDK按钮,将文件下载至本地,解压后,可获取如图所示的文件内容。
压缩包内容 | 描述 |
aliyun-java-sdk-dataphin | OpenAPI SDK JAR包,可在Maven项目中引入,包含SDK1.0、SDK2.0接口输入输出定义。 |
aliyun-java-sdk-dataphin-core | OpenAPI SDK JAR包,可在Maven项目中引入。由于API演进和优化,Dataphin提供了不同的SDK版本,用于不同的API调用。
|
doc | Dataphin OpenAPI - SDK1.0接口文档:
|
doc-v2 | Dataphin OpenAPI - SDK2.0接口文档:
|
example | OpenAPI开发接入参考示例。 |
使用SDK调用API接口
参考压缩包内容中的example工程,引入三个JAR包的Maven依赖:
aliyun-java-sdk-dataphin由压缩包提供。
aliyun-java-sdk-dataphin-core由压缩包提供。
aliyun-java-sdk-core可以在Maven公共仓库获取。
因Dataphin的OpenAPI SDK依赖阿里云OpenAPI三方库:aliyun-java-sdk-core,所以代码编译机器环境需连通公网,方便下载三方库JAR包。
<dependencies>
<dependency>
<groupId>com.alibaba.dataphin</groupId>
<artifactId>aliyun-java-sdk-dataphin</artifactId>
<version>${具体版本根据获取到SDK.JAR的版本决定}</version>
<systemPath>${JAR包路径}/aliyun-java-sdk-dataphin-{SDK版本}.JAR</systemPath>
</dependency>
<dependency>
<groupId>com.alibaba.dataphin</groupId>
<artifactId>aliyun-java-sdk-dataphin-core</artifactId>
<version>${具体版本根据获取到JAR的版本决定}</version>
<systemPath>${JAR包路径}/aliyun-java-sdk-dataphin-core-{SDK版本}.JAR</systemPath>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.3</version>
</dependency>
</dependencies>
若Idea编译器未找到相关JAR包,可手动添加,操作如下:
调用代码样例
package com.example.demo;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.dataphin.DataphinAcsClient;
import com.aliyuncs.dataphin.model.v20200830.security.ListUsersRequest;
import com.aliyuncs.dataphin.model.v20200830.security.ListUsersResponse;
import com.aliyuncs.dataphin_public.model.v20230630.ListAddableUsersRequest;
import com.aliyuncs.dataphin_public.model.v20230630.ListAddableUsersResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main {
private static final Logger log = LoggerFactory.getLogger(Main.class);
/**
* regionId: 可自定义,如dataphin
*/
public static final String REGION_ID = "dataphin";
/**
* endpoint: Dataphin的OpenAPI服务地址,请联系运维部署同学获取
*/
public static final String ENDPOINT = "dataphin-openapi.env16.aliyun.com";
/**
* accessKey: Dataphin的AK,在Dataphin右上角【个人信息-个人中心-AccessKey管理】中获取;代表当前个人的身份,所以建议使用超管账号调用;
*/
public static final String ACCESS_KEY = "******";
/**
* secret: Dataphin的SK,获取方式同上
*/
public static final String ACCESS_SECRET = "******";
/**
* 租户ID,Dataphin界面浏览器地址栏中获取
* 例如:【https://dataphin.example.com/home/?tenantId=123456】,tenantId即为123456,因为项目不会轻易变更,可以作为常量或配置项保存
*/
public static final Long TENANT_ID = 123456L;
/**
* 第二步:调用示例,根据租户ID获取用户列表
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// SDK v1.0调用示例
testBySdkV1();
//SDK v2.0调用示例
testBySdkV2();
}
/**
* SDK v1.0调用示例
* SDK v1.0 所有的接口request都在目录 com.aliyuncs.dataphin.model.v20200830 下
* @throws ClientException
*/
private static void testBySdkV1() throws ClientException {
ListUsersRequest request = new ListUsersRequest();
ListUsersRequest.UserPagedQuery query = new ListUsersRequest.UserPagedQuery();
request.setOpTenantId(TENANT_ID);
query.setPage(1);
query.setPageSize(20);
request.setUserPagedQuery(query);
try {
ListUsersResponse response = getSdkV1Client().getAcsResponse(request);
System.out.println(response.getData().getTotalCount());
} catch (ClientException e) {
log.error(e.getMessage(), e);
System.out.println(e.getMessage());
throw e;
}
}
/**
* SDK v2.0调用示例
* SDK v2.0 所有的接口request都在目录 com.aliyuncs.dataphin_public.model.v20230630 下
* @throws ClientException
*/
private static void testBySdkV2() throws ClientException {
ListAddableUsersRequest request = new ListAddableUsersRequest();
request.setOpTenantId(TENANT_ID);
ListAddableUsersRequest.ListQuery listQuery = new ListAddableUsersRequest.ListQuery();
listQuery.setPage(1);
listQuery.setPageSize(20);
request.setListQuery(listQuery);
try {
ListAddableUsersResponse response = getSdkV2Client().getAcsResponse(request);
System.out.println(response.getPageResult().getTotalCount());
} catch (ClientException e) {
log.error(e.getMessage(), e);
System.out.println(e.getMessage());
throw e;
}
}
/**
* Dataphin OpenAPI - SDK2.0 客户端连接方式
* @return
*/
static DefaultAcsClient clientV2 = null;
public static synchronized DefaultAcsClient getSdkV2Client() {
if(clientV2!= null) {
return clientV2;
}
DefaultProfile profile = DefaultProfile.getProfile(REGION_ID, ACCESS_KEY, ACCESS_SECRET);
DefaultProfile.addEndpoint(REGION_ID, "dataphin-public", ENDPOINT);
profile.getHttpClientConfig().setIgnoreSSLCerts(true);
clientV2 = new DefaultAcsClient(profile);
return clientV2;
}
/**
* Dataphin OpenAPI - SDK1.0 客户端连接方式
* @return
*/
static DataphinAcsClient clientV1 = null;
public static synchronized DataphinAcsClient getSdkV1Client() {
if(clientV1 != null) {
return clientV1;
}
DefaultProfile profile = DefaultProfile.getProfile(REGION_ID, ACCESS_KEY, ACCESS_SECRET);
DefaultProfile.addEndpoint(REGION_ID, "dataphin", ENDPOINT);
profile.getHttpClientConfig().setIgnoreSSLCerts(true);
clientV1 = new DataphinAcsClient(profile);
return clientV1;
}
}
OpenAPI常见问题
以下为API常见的通用错误,具体API的错误信息,您可以查看API文档,或咨询Dataphin技术支持。
OpenAPI报错 | 解决方法 |
| 调用地址不正确,或者没有配置DNS解析,请确认域名是否正确或IP是否可正确解析。 输入命令 |
| 调用AccessKey/SecretKey不正确,或调用AccessKey已被禁用,请检查。 |
| 缺少公共参数opTenantId,请参见OpenAPI使用准备。 |
| 公共参数opTenantId错误,请参见OpenAPI使用准备。 |