概述
小程序從創建到發布的整個流程中的操作,都可以通過調用 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 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>
環境變量配置
配置環境變量 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 系統配置方法
新建環境變量,添加環境變量 MPAAS_AK_ENV 和 MPAAS_SK_ENV,并寫入已準備好的 AccessKey ID 和 AccessKey Secret。
重啟 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。