概述
小程序从创建到发布的整个流程中的操作,都可以通过调用 OpenAPI 来实现,实现用户服务端和 mPaaS 服务端的对接。
限流说明
为防止 OpenAPI 方式调用过于频繁从而对应用的运行产生影响,OpenAPI 在调用的过程中存在限流机制,具体限流策略如下:
- mcube 的 OpenAPI 是单机限流,限流维度是 appId+workspaceId。
- mcube 目前提供两台用于接收 OpenAPI 请求的设备,由负载均衡进行 OpenAPI 请求转发。
- 在单机维度,上传小程序资源包的接口限流为每分钟 10 次,即每 6 秒内只能调用一次;其余接口限流为每分钟 600 次,即每 0.1 秒只能调用一次。
准备工作
在使用 OpenAPI 前,您需要先获取 AccessKey、App ID 与 Workspace ID,并 配置 Maven 依赖 及 配置文件上传。
获取 AccessKey
AccessKey 包括 AccessKey ID 与 AccessKey Secret,点击此处 查看获取方式。
- AccessKey ID:用于标识用户。
- AccessKey Secret:用于验证用户的密钥,必须保密。
获取 App ID、Workspace ID 与 Tenant ID
- 登录 mPaaS 控制台,进入应用。
- 在 总览 页,依次点击 代码配置(可视情况选择 Android 或 iOS) > 下载配置文件 > 立即下载,在右侧弹出的 代码配置 窗口中,您可以看到 App ID、Workspace ID 和 Tenant ID 的值。
配置 Maven 依赖
在使用 OpenAPI 之前,您需要完成以下 Maven 依赖配置。
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-mpaas</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<optional>true</optional>
<version>[4.3.2,5.0.0)</version>
</dependency>
使用示例
使用 Maven 中的 Client 示例如下:
private static final String REGION_ID = "cn-hangzhou"; //地域ID,默认为 cn-hangzhou
private static final String ACCESS_KEY_ID = "*****************"; // RAM 账号的 AccessKey ID
private static final String ACCESS_SECRET = "******************"; //RAM 账号的 AccessKey Secret
private static final String PRODUCT = "mpaas"; // 产品名称
private static final String END_POINT = "mpaas.cn-hangzhou.aliyuncs.com"; // 调用的 endpoint
DefaultProfile.addEndpoint(REGION_ID, PRODUCT, END_POINT);
DefaultProfile profile = DefaultProfile.getProfile(REGION_ID, ACCESS_KEY_ID, ACCESS_SECRET);
IAcsClient iAcsClient = new DefaultAcsClient(profile);
QueryMcubeVhostRequest queryMcubeVhostRequest = new QueryMcubeVhostRequest();
queryMcubeVhostRequest.setAppId(APP_ID);
queryMcubeVhostRequest.setWorkspaceId(WORKSPACE_ID);
queryMcubeVhostRequest.setTenantId(TENANT_ID);
QueryMcubeVhostResponse acsResponse = null;
try {
acsResponse = iAcsClient.getAcsResponse(queryMcubeVhostRequest);
System.out.println(acsResponse.getResultCode());
System.out.println(acsResponse.getQueryVhostResult());
} catch (ClientException e) {
e.printStackTrace();
}
配置文件上传
由于在所有的 API 接口中均不允许出现文件流,所以需要上传的文件都应先调用上传工具类来将文件上传至 OSS,再将返回的 OSS 地址作为参数传递到指定的 API 中。
您可下载相关的文件的上传工具类 OssPostObject.java.zip。
使用示例
文件上传示例如下:
GetMcubeFileTokenRequest getMcubeFileTokenRequest = new GetMcubeFileTokenRequest();
getMcubeFileTokenRequest.setAppId(APP_ID);
getMcubeFileTokenRequest.setOnexFlag(true);
getMcubeFileTokenRequest.setTenantId(TENANT_ID);
getMcubeFileTokenRequest.setWorkspaceId(WORKSPACE_ID);
GetMcubeFileTokenResponse acsResponse = iAcsClient.getAcsResponse(getMcubeFileTokenRequest);
System.out.println(JSON.toJSONString(acsResponse));
GetMcubeFileTokenResponse.GetFileTokenResult.FileToken fileToken = acsResponse.getGetFileTokenResult().getFileToken();
OssPostObject ossPostObject = new OssPostObject();
ossPostObject.setKey(fileToken.getDir());
ossPostObject.setHost(fileToken.getHost());
ossPostObject.setOssAccessId(fileToken.getAccessid());
ossPostObject.setPolicy(fileToken.getPolicy());
ossPostObject.setSignature(fileToken.getSignature());
ossPostObject.setFilePath("your/local/file/path");
String s = ossPostObject.postObject();
有关 GetMcubeFileTokenRequest
的说明请参见 获取上传文件 token。