Terkadang, data respons API dienkode atau dienkripsi, dan mungkin perlu untuk mengubahnya menjadi teks biasa yang dapat dibaca. Anda dapat mencapai ini menggunakan pustaka JS bawaan di Apidog atau dengan memanggil bahasa pemrograman eksternal seperti Python atau JavaScript untuk pemrosesan.
Misalnya, data yang dienkode Base64 dapat didekode menggunakan pustaka bawaan.
Di bawah ini, kami akan membagikan beberapa contoh umum tentang mendekode dan mendekripsi. Jika Anda belum menginstal Apidog, cukup klik tombol untuk memulai!
Mendekode Data Respons
Dekode Base64
Ketika sebuah API mengembalikan data yang dienkode Base64, Anda dapat menggunakan pustaka CryptoJS yang terpasang di Apidog untuk mendekodenya. Berikut cara melakukannya:
Misalkan API mengembalikan data yang dienkode Base64 berikut:
{"data": "SGVsbG8gd29ybGQh"}
Anda dapat mendekode data Base64 ini dengan skrip seperti ini:
// Impor pustaka CryptoJS
const CryptoJS = require("crypto-js");
// String yang dienkode Base64 (diambil dari data respons)let encodedData = {"data": "SGVsbG8gd29ybGQh"
};
// Dekode data Base64let decodedData = CryptoJS.enc.Base64.parse(encodedData.data).toString(CryptoJS.enc.Utf8);
// Keluarkan hasil yang didekode
console.log(decodedData); // "Hello, world!"
Di Apidog, Anda dapat menambahkan skrip khusus di bagian "Pasca-permintaan" dengan logika di atas. Setelah mengirim permintaan, Anda dapat melihat data yang didekode di "Konsol" panel respons.

Selain itu, Anda dapat menyimpan data yang didekode dalam variabel lingkungan untuk penggunaan di masa mendatang, seperti ini:
pm.environment.set("decodedData", decodedData);
Jika respons JSON berisi data yang dienkode Base64, Anda juga dapat menggunakan CryptoJS untuk mendekodenya dan mengatur data JSON yang didekode sebagai badan respons dengan metode pm.response.setBody()
. Berikut adalah contoh untuk respons JSON yang dienkode Base64:

Untuk mendekodenya dan menampilkan data JSON yang didekode di Badan Respons, contoh skripnya adalah sebagai berikut:
// Impor pustaka CryptoJS
const CryptoJS = require("crypto-js");
// String yang dienkode Base64 (diambil dari data respons)let encodedData = pm.response.text();
// Dekode data Base64let decodedData = CryptoJS.enc.Base64.parse(encodedData).toString(CryptoJS.enc.Utf8);
// Parse string JSON yang didekodelet jsonData = JSON.parse(decodedData);
// Atur data JSON yang di-parse sebagai badan respons
pm.response.setBody(JSON.stringify(jsonData));

Dekode URLEncode
Ketika data respons dienkode URL, Anda dapat menggunakan metode decodeURIComponent()
bawaan JavaScript untuk mendekodenya.
Misalnya, pertimbangkan sebuah API yang mengembalikan string JSON yang dienkode URL berikut:
{"name": "%E5%BC%A0%E4%B8%89","email": "qxhswppn%40gmail.com"
}
Anda dapat mendekode nilai string JSON ini seperti ini:
// Ini adalah data JSON yang dienkode URL dari responslet response = {"name": "%E5%BC%A0%E4%B8%89","email": "qxhswppn%40gmail.com"
};
// Dekode menggunakan decodeURIComponentlet decodedName = decodeURIComponent(response.name);
let decodedEmail = decodeURIComponent(response.email);
console.log(decodedName); // "Jason"
console.log(decodedEmail); // "qxhswppn@gmail.com"

Mendekripsi Data Respons
Dekripsi AES
Untuk mendekripsi ciphertext yang dienkripsi AES, Anda perlu menyediakan kunci atau vektor inisialisasi (IV) yang sesuai. AES menggunakan enkripsi simetris, yang berarti kunci yang sama digunakan untuk enkripsi dan dekripsi. Jika Anda tidak memiliki kunci atau IV yang benar, Anda tidak dapat mendekripsi ciphertext.
Dengan asumsi Anda memiliki ciphertext yang dienkripsi AES dalam mode ECB, Anda dapat menggunakan pustaka CryptoJS untuk mendekripsinya di Apidog seperti ini:
// Impor pustaka CryptoJSconst CryptoJS = require('crypto-js');
// Ciphertext yang dienkripsi AES yang dienkode Base64 (diambil dari data respons)const ciphertext = "Gig+YJFu4fLrrexzam/vblRV3hoT25hPZn0HoNoosHQ=";
// Kunci untuk dekripsi (pastikan ukurannya 16/24/32 byte; biasanya dibaca dari variabel lingkungan)const key = CryptoJS.enc.Utf8.parse('1234567891234567');
// Dekripsi AESconst decryptedBytes = CryptoJS.AES.decrypt(ciphertext, key, {
mode: CryptoJS.mode.ECB, // Mode dekripsi
padding: CryptoJS.pad.Pkcs7 // Metode padding
});
// Konversi array byte yang didekripsi ke string UTF-8const originalText = decryptedBytes.toString(CryptoJS.enc.Utf8);
// Keluarkan teks yang didekripsi
console.log(originalText); // "Hello,Apidog!"
Anda dapat melihat data yang didekripsi di konsol respons.

Dekripsi RSA
Untuk mendekripsi ciphertext yang dienkripsi RSA, Anda perlu menyediakan kunci privat RSA yang sesuai, karena RSA adalah algoritma enkripsi asimetris. Pasangan kunci terdiri dari kunci publik dan kunci privat, dan kunci privat sangat penting untuk dekripsi.
Apidog menyertakan pustaka jsrsasign
(Perbarui versi terbaru), yang dapat Anda gunakan untuk mendekripsi ciphertext RSA. Berikut adalah contohnya:
// Impor pustaka jsrsasign
const jsrsasign = require('jsrsasign');
// Definisikan kunci privat (biasanya dibaca dari variabel lingkungan)
const privateKeyPEM = `
-----BEGIN PRIVATE KEY-----
Private key...
-----END PRIVATE KEY-----
`;
// Definisikan ciphertext (biasanya diekstrak dari data respons)
const ciphertext = '';
// Dekripsi
const prvKeyObj = jsrsasign.KEYUTIL.getKey(privateKeyPEM);
const decrypted = jsrsasign.KJUR.crypto.Cipher.decrypt(ciphertext, prvKeyObj);
console.log(decrypted);

Referensi contoh lengkap untuk enkripsi dan dekripsi RSA sederhana (perhatikan bahwa versi jsrsasign adalah 10.3.0, dan sintaks versi lain mungkin tidak kompatibel), yang dapat Anda jalankan di lingkungan Node.js dan melakukan operasi enkripsi atau dekripsi di Apidog sesuai kebutuhan:
const rsa = require('jsrsasign');
// Hasilkan pasangan kunci RSA
const keypair = rsa.KEYUTIL.generateKeypair("RSA", 2048);
const publicKey = rsa.KEYUTIL.getPEM(keypair.pubKeyObj);
const privateKey = rsa.KEYUTIL.getPEM(keypair.prvKeyObj, "PKCS8PRV");
console.log("Public Key:", publicKey);
console.log("Private Key:", privateKey);
// Enkripsi dengan kunci publik
const plaintext = "Hello, Apidog!";
const pubKeyObj = rsa.KEYUTIL.getKey(publicKey);
const encryptedHex = rsa.KJUR.crypto.Cipher.encrypt(plaintext, pubKeyObj);
console.log("Encrypted Key:", encryptedHex);
// Dekripsi dengan kunci privat
const prvKeyObj = rsa.KEYUTIL.getKey(privateKey);
const decrypted = rsa.KJUR.crypto.Cipher.decrypt(encryptedHex, prvKeyObj);
console.log("Decrypted Plaintext:", decrypted);

Menggunakan Program Eksternal untuk Dekripsi
Selain menggunakan pustaka JS bawaan Apidog untuk dekripsi, Anda juga dapat memanggil "program eksternal" untuk melakukan dekripsi. Untuk informasi lebih lanjut tentang menggunakan program eksternal, Anda dapat memeriksa pusat bantuan Apidog untuk instruksi terperinci.
.jar
untuk program Java, atau .py
, .php
, .js
untuk skrip dalam bahasa lain. Anda dapat mengakses direktori ini melalui "Pengaturan -> Program Eksternal" di sudut kanan atas antarmuka Apidog.
Contoh: Dekripsi RSA dengan Node.js
Jika Anda ingin melakukan dekripsi RSA menggunakan pustaka node-forge
di Node.js, Anda dapat membuat file .js
di Direktori Program Eksternal untuk mengimplementasikan logika dekripsi. Berikut cara melakukannya:
- Buat Skrip Dekripsi Pertama, buat file
.js
dan implementasikan logika dekripsi. Karena Anda akan menggunakan pustakanode-forge
, instal di direktori tersebut menggunakan npm atau yarn. Berikut tampilan skrip Anda:
// Impor pustaka node-forge
const forge = require('node-forge');
// Dapatkan argumen baris perintah
const args = process.argv.slice(2);
// Kunci privat Anda (format PEM)
const privateKeyPem = `
-----BEGIN RSA PRIVATE KEY-----
private key……
-----END RSA PRIVATE KEY-----`;
// Ciphertext terenkripsi dari baris perintah
const encrypted = args[0];
// Konversi kunci privat format PEM ke objek kunci privat forge
const privateKey = forge.pki.privateKeyFromPem(privateKeyPem);
// Konversi data terenkripsi yang dienkode Base64 ke array byte
const encryptedBytes = forge.util.decode64(encrypted);
// Dekripsi data
const decrypted = privateKey.decrypt(encryptedBytes, 'RSA-OAEP');
// Output console.log() akan ditangkap oleh Apidog
console.log(decrypted);
- Panggil Program Eksternal di Apidog Setelah menulis skrip dekripsi, Anda dapat menggunakan metode
pm.executeAsync()
di bagian "Pasca-permintaan" Apidog untuk memanggil program eksternal ini. Pastikan bahwa skrip dekripsi Anda ditempatkan di direktori program eksternal yang benar dan bahwa jalur yang Anda referensikan relatif terhadap direktori tersebut. Berikut cara memanggilnya:
// Ciphertext terenkripsi (biasanya diperoleh dari data respons)
const encrypted = 'iDqUyR3BpaTqpzq…………';
// Jalur program eksternal, meneruskan parameter
const result = await pm.executeAsync('./nodejs-rsa/rsa.js', [`${encrypted}`]);
console.log('Result:', result);
Ketika Anda mengirim permintaan di Apidog, itu akan secara otomatis meneruskan ciphertext ke program eksternal yang Anda definisikan, melakukan dekripsi, dan menangkap output hasil melalui console.log()
, yang pada akhirnya mengembalikan plaintext yang didekripsi.
Dekripsi semacam ini tidak terbatas pada Node.js, bahasa pemrograman lain seperti Java, PHP, Python, Go, dll. dapat melakukan operasi dan panggilan serupa.
Kesimpulan
Menggunakan metode yang diuraikan dalam artikel ini, Anda dapat secara efektif mendekode dan mendekripsi data respons di Apidog, mengubahnya menjadi teks biasa yang dapat dibaca. Coba Apidog sekarang!