前言:實際上開發一個Java-SDK的過程,實際上也就是開發一個基本java項目並打包成jar包的過程,然後可以被其它項目引入使用。區別大概在於,與普通項目相比,它強調的是一種公共過程封裝,而非具體的操作執行。就好比我開發了一個會吃飯的人,但是它現在並不需要馬上吃飯。如果這個人被帶到其他地方,可以直接調用吃飯動作讓它吃飯,而不用關心它怎麼吃的。
開發工具:Intellij IDEA
第一步:新建一個maven項目
默認即可,無需勾選模板,一直下一步直到完成
第二步:項目開發
與普通maven項目開發無異,着重在於操作過程的完整封裝,比如開發一個自動向某一數據接口發送請求並返回結果的SDK,當然,它的好處就在於可以被直接提供給第三方調用,傳入必須參數後自動完成請求參數封裝以及加簽等動作,將返回結果自動驗籤並輸出最終返回,第三方開發人員無需關心過程,只需關注如何傳入參數然後獲取結果即可。
使用該SDK你可以:
- 自動生成祕鑰(公鑰(用於接收方驗籤)+私鑰(用於發送方加簽))
- 使用客戶端類發送請求並取得返回結果
第三步:打成jar包
File —— Project Structure —— Project Settings —— Artifacts —— 右欄左上角+ —— JAR —— From Modules with dependencies
默認即可,無需設置其他參數(與生成可執行jar包有所區別)
默認即可,同樣無勾選無填寫,——>點擊apply
第四步:構建jar包並輸出
Build —— Build Artifacts —— Build(第一次構建)/ Rebuild(重新構建,會先自定清理上次構建jar包)/ Clean(清理構建好的jar包)
隨後將在項目根目錄下自動生成out文件夾,可以看到生成的jar包已然在內
第五步:在其他項目導入SDK使用
1. 導入
File —— Project Structure —— Libraries —— 右欄左上角 + —— java ——選擇上一個項目導出的jar包 —— Apply
2. 使用
import com.hyacinth.api.DefaultHyacinthClient;
import com.hyacinth.api.HyacinthClient;
import com.hyacinth.api.HyacinthRequest;
import com.hyacinth.api.HyacinthResponse;
import com.hyacinth.api.exception.HyacinthApiException;
public class SendTest {
public static void main(String[] gg) {
//********數據接口地址
String url = "https://XXXXXXXXXXXXXXX";
//分配給開發者的應用ID
String appId = "XXXXXXXXXXXXXXXXXXXXXXXX";
//開發者的私鑰(用於加簽)
String appPrivateKey = "XXXXXXXXXXXXXXXXXXXXX";
//********數據平臺公鑰(用於驗籤)
String hyacinthPublicKey = "XXXXXXXXXXXXXXXX";
//生成簽名字符串所使用的簽名算法類型,固定值:RSA2
String signType = "RSA2";
//調用的接口版本,固定值:1.0
String version = "1.0";
//接口名稱
String method = "blacklist.court.shixin";
//業務參數,最大長度不限,除公共參數外所有請求參數都必須放在這個參數中傳遞
String data = "{'name':'XXX','idCard':'XXXXXXXXXXXXXXXXXXXX'}";
//實例化客戶端 (客戶端接口 hc = new 客戶端默認實現(參數1,參數2...))
HyacinthClient hc = new DefaultHyacinthClient(url, appId, appPrivateKey, hyacinthPublicKey, signType, version, method);
//request類,SDK已經封裝掉了公共參數,這裏只需要傳入業務參數
HyacinthRequest hyacinthRequest = new HyacinthRequest();
hyacinthRequest.setData(data);
//返回
HyacinthResponse response = null;
try {
response = hc.execute(hyacinthRequest);
} catch (HyacinthApiException e) {
e.printStackTrace();
}
if (response != null && "200".equals(response.getCode())) {
//處理返回數據
System.out.println(response.getData());
}
}
}