Dokumen ini memberikan panduan umum dan instruksi untuk pemanggilan API.
Pemanggilan API QA Open Platform
Untuk memanggil operasi API pada platform terbuka, Anda harus membuat aplikasi di Quick Audience Open Platform. Setelah aplikasi dibuat, sistem secara otomatis menghasilkan ID aplikasi, AccessKey, dan AccessSecret. Parameter kunci ini diperlukan untuk pemanggilan API.
Tanda tangan
Setelah aplikasi Anda mendapatkan izin API yang sesuai, Anda dapat melakukan langkah-langung berikut untuk memanggilnya: Lampirkan appId, accessKey, dan timestamp ke URL API yang memulai permintaan. Selain itu, tambahkan bidang Authorization yang ditandatangani ke header permintaan.
Parameter umum
Item | Contoh nilai | Lokasi |
appId | ID aplikasi dari platform terbuka. | Bagian parameter dalam URI permintaan |
accessKey | ak dari aplikasi pada platform terbuka | Bagian parameter dalam URI permintaan |
timestamp | Timestamp saat ini (milidetik) | Bagian parameter dalam URI permintaan |
Authorization | Tanda tangan yang dihasilkan | Di header permintaan |
Ikuti langkah-langkah berikut untuk menandatangani permintaan:
Gunakan parameter permintaan untuk membangun string query yang telah dikanonikalisasi.
Urutkan semua parameter dalam permintaan (termasuk "parameter permintaan publik" yang dijelaskan dalam dokumen dan parameter kustom dari API permintaan yang diberikan) dalam urutan leksikografis nama parameter permintaan. Catatan: Saat menggunakan metode GET untuk mengirimkan permintaan, parameter ini adalah bagian dari URI permintaan (yaitu bagian yang dihubungkan oleh "&" setelah "?" dalam URI). accessSecret juga diperlukan dalam parameter yang digunakan untuk menghasilkan tanda tangan.
Nama dan nilai dienkripsi menggunakan set karakter UTF-8.
Gunakan urlEncode untuk semua parameter URL.
Gunakan kode contoh yang ditunjukkan pada gambar berikut dan konfigurasikan parameter dalam kode tersebut.
Kode Java berikut memberikan contoh logika pembuatan tanda tangan:
String appId="tttt";
String accessKey = "xxxx";
String accessSecret ="yyyy";
String timeStamp = "1708235644862";
SortedMap<String, String> map = new TreeMap<>();
map.put("appId", appId);
map.put("accessKey", accessKey);
map.put("accessSecret",accessSecret );
map.put("timestamp", timeStamp);
// Jika ini adalah permintaan get dan ada parameter kueri lainnya, lanjutkan menambahkan
String aa = getCanonicalQueryString(map);
System.out.println(aa);
String authorization = org.apache.commons.codec.digest.DigestUtils.md5Hex(aa);
System.out.println(authorization);public static String getCanonicalQueryString(SortedMap<String, String> paramsMap) {
StringBuilder queryString = new StringBuilder();
boolean isFirstParameter = true;
for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
String paramName = entry.getKey();
String value = entry.getValue();
if (!isFirstParameter) {
queryString.append("&");
} else {
isFirstParameter = false;
}
queryString.append(paramName).append("=").append(value);
}
return queryString.toString();
}Contoh pernyataan:
curl --location -g --request POST 'http://{quick audience public endpoint}/openapi/apipath/xxxx?appId=aaa&accessKey=xxx×tamp=yyy' \
--header 'Authorization: demosign'Quick Audience memeriksa tanda tangan berdasarkan parameter sebelumnya. Jika aplikasi tidak ada atau tanda tangannya salah, aplikasi akan memblokir permintaan. Untuk parameter API lainnya, lihat dokumen API spesifik.
Nama Domain
Lingkungan | Nama Domain | |
Cina (Zhangjiakou) | quicka.aliyun.com | |
Cina (Shanghai) | quicka-shanghai.aliyun.com |
Kode pengecualian
Kode pengecualian | Deskripsi | |
ES05910010001 | Aplikasi tidak ada. | Periksa apakah APP yang dibuat di platform terbuka ada. |
ES05910010002 | Kode kesalahan yang dikembalikan karena tanda tangan dalam permintaan tidak valid. | Periksa apakah tanda tangan dihasilkan dengan benar. |
ES05910010003 | Verifikasi timestamp gagal. | Timestamp yang dihasilkan harus dipanggil dalam waktu 30 menit. Jika tidak, verifikasi gagal. |
ES05910010004 | Aplikasi tidak memiliki izin API saat ini. | Aplikasi perlu berlangganan API sebelum dapat digunakan. |
ES05910010005 | Periksa apakah parameter appId, accessKey, dan timestamp benar. | Parameter publik appId, accessKey, dan timestamp harus diteruskan sesuai dengan spesifikasi platform. |