概述及准备

概述

小程序从创建到发布的整个流程中的操作,都可以通过调用 OpenAPI 来实现,实现用户服务端和 mPaaS 服务端的对接。

限流说明

为了防止 OpenAPI 方式调用过于频繁从而对应用的运行产生影响,OpenAPI 在调用的过程中存在限流机制,具体限流策略如下:

  • mcube 的 OpenAPI 是单机限流,限流维度是 appId+workspaceId。

  • mcube 目前提供两台用于接收 OpenAPI 请求的设备,由负载均衡进行 OpenAPI 请求转发。

  • 在单机维度,上传小程序资源包的接口限流为每分钟 10 次,即每 6 秒内只能调用一次;其余接口限流为每分钟 600 次,即每 0.1 秒只能调用一次。

准备工作

在使用 OpenAPI 前,您需要先获取 AccessKey、获取 App ID、Workspace ID 与 Tenant ID,并配置 Maven 依赖及配置文件上传。

获取 AccessKey

AccessKey 包括 AccessKey IDAccessKey Secret点击此处 查看获取方式。

  • AccessKey ID:用于标识用户。

  • AccessKey Secret:用于验证用户的密钥,必须保密。

获取 App ID、Workspace ID 与 Tenant ID

  1. 登录 mPaaS 控制台,进入应用。

  2. 总览 页,依次点击 代码配置(可视情况选择 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>

环境变量配置

配置环境变量 MPAAS_AK_ENV 和 MPAAS_SK_ENV。

  • Linux 和 macOS 系统配置方法执行以下命令:

    export MPAAS_AK_ENV=access_key_id
    export MPAAS_SK_ENV=access_key_secret
    说明

    access_key_id 替换为已准备好的 AccessKey ID,access_key_secret 替换为 AccessKey Secret。

  • Windows 系统配置方法

    1. 新建环境变量,添加环境变量 MPAAS_AK_ENV MPAAS_SK_ENV,并写入已准备好的 AccessKey ID 和 AccessKey Secret。

    2. 重启 Windows 系统。

使用示例

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.mpaas.model.v20201028.QueryMcubeVhostRequest;
import com.aliyuncs.mpaas.model.v20201028.QueryMcubeVhostResponse;
import com.aliyuncs.profile.DefaultProfile;

public class MpaasApiDemo {

    /**
     * mPaaS控制台上对应的APP ID
     */
    private static final String APP_ID = "ALIPUB40DXXXXXXX";

    /**
     * mPaaS控制台上对应的工作空间id
     */
    private static final String WORKSPACE_ID = "default";

    /**
     * mPaaS控制台上对应的租户id
     */
    private static final String TENANT_ID = "XVXXXXXF";

    /**
     * 地域ID,默认为 cn-hangzhou
     */
    private static final String REGION_ID = "cn-hangzhou";

    /**
     * 产品名称
     */
    private static final String PRODUCT = "mpaas";

    /**
     * 调用的endpoint
     */
    private static final String END_POINT = "mpaas.cn-hangzhou.aliyuncs.com";

    public static void main(String[] args) {
        // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
        // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
        // 本示例以将AccessKey ID和AccessKey Secret保存在环境变量为例说明。您也可以根据业务需要,保存到配置文件里。
        String accessKeyId = System.getenv("MPAAS_AK_ENV");
        String accessKeySecret = System.getenv("MPAAS_SK_ENV");

        DefaultProfile.addEndpoint(REGION_ID, PRODUCT, END_POINT);
        DefaultProfile profile = DefaultProfile.getProfile(REGION_ID, accessKeyId, accessKeySecret);
        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 (Exception e) {
            throw new RuntimeException(e);
        }
    }

}

配置文件上传

由于在所有的 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