爲什麼學習源碼 ?
-
告別碼農, 追求技術的本質, 不被框架花裏胡哨的封裝嚇倒.
-
當感覺到自己對現在工作已經得心應手時, 想更進一層樓.真正讀懂業務代碼底層,
-
面試時能更好的吊打面試官,讓企業對你垂涎三尺.
阿里雲SDK 是什麼?
阿里雲SDK允許您通過編程訪問阿里雲服務,例如彈性計算服務(ECS),服務器負載平衡器(SLB)和CloudMonitor。您可以訪問阿里雲服務,而無需處理與API相關的任務,例如簽名和構造請求。
爲什麼要學阿里雲 SDK Core ?
-
阿里雲 SDK Core 最低兼容 JDK1.6 , 項目中沒有使用高版本語法糖, 代碼邏輯相對簡單, 學習門檻低.
-
阿里雲SDK Core 包含了基礎的設計模式, 以及 動態代理, 網絡通訊, 日誌集成等多項Java編程技巧.
-
阿里雲在中國雲服務器市場的份額最大, 所有的阿里雲服務SDK 都依賴SDK Core, 源碼含金量高.
-
阿里巴巴將制定了符合中國特色的Java開發規範, 學習它的源碼等同於學習阿里Java開發規範.
學習SDK Core 第一步
阿里雲SDK 基於 Maven 管理, 只需要你的電腦裝有 Maven 並且 JDK 1.6 以上就可以運行所有阿里雲 SDK項目.現在要做的是下載源碼 (本文SDK基於 4.4.2).
https://developer.aliyun.com/tools/sdk?spm=a2c6h.13066369.0.0.7e254204vNmPv3#/java
看個 SDK Core Demo
以下代碼示例顯示了使用阿里雲SDK for Java的三個主要步驟 (阿里雲短信Demo) :
-
創建並初始化DefaultAcsClient實例。
-
創建一個API請求並設置參數。
-
發起請求並處理響應或異常。
package com.testprogram;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.http.HttpUtil;
import com.aliyuncs.profile.DefaultProfile;
public class Main {
public static void main(String[] args) {
// 1.創建並初始化`DefaultAcsClient`實例。
DefaultProfile profile = DefaultProfile.getProfile(
"<your-region-id>", // The region ID
"<your-access-key-id>", // The AccessKey ID of the RAM account
"<your-access-key-secret>"); // The AccessKey Secret of the RAM account
IAcsClient client = new DefaultAcsClient(profile);
// 2.創建一個API請求並設置參數。
CommonRequest request = new CommonRequest();
request.setSysProtocol(ProtocolType.HTTPS);
request.setSysMethod(MethodType.POST);
request.setSysDomain("dysmsapi.aliyuncs.com");
request.setSysVersion("2017-05-25");
request.setSysAction("SendSms");
request.putQueryParameter("SignName", "xxxx告訴");
request.putQueryParameter("PhoneNumbers", 1329695482131);
request.putQueryParameter("TemplateCode", "SMS_1754303333");
/*
尊敬的${named},(先生/女士): 您好!感謝您使用XXXXX 平臺的服務.
您的 ${orderId} 訂單已完成. 爲了提高我司的後續服務體驗.誠邀您在閒暇時進入我司App 對本訂單進行追評,
*/
request.putQueryParameter("TemplateParam", " {\"named\":\""+named+"\",\"orderId\":\""+orderId+"\"}");
// 3.發起請求並處理響應或異常。
try {
CommonResponse response = client.getCommonResponse(request);
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
}
}
開啓SDK Core Debug 開關 的兩種方式
-
// 在最開始代碼顯示聲明 HttpUtil.setIsHttpContentDebug(true); HttpUtil.setIsHttpDebug(true);
-
設置 環境變量 K = DEBUG V = sdk 具體原因爲
請查看彩蛋第 30行.
查看SDK Core 核心DefaultAcsClient類UML圖
Core Demo 前兩步是 構建憑證對象, 填充請求對象, 第三步爲 SDK 客戶端 與 阿里雲API資源交互, 爲核心邏輯,讓我們點進 DefaultAcsClient.getCommonResponse 源碼一探究竟,
doAction 方法的參數列表, 請求對象, 請求失敗是否重試, 最多重試次數, 客戶端憑證.
組裝關鍵參數ing,完事進入重頭戲!
集合一切客戶端的參數,並完成對稱加密 Boby, 重頭戲!
代理模式獲取最終的RPC客戶端來發送封裝的信息,拋磚引玉到這. 最後一個彩蛋自己研究, 防止讀者成爲博客大神….
使用CommonRequest進行調用_使用手冊_Java SDK-阿里雲helpcdn.aliyun.com
微信掃描二維碼,關注我的公衆號
深入淺出分享 Java 乾貨 , 找回對代碼的 Passion , 助力月入 20K+