Anda menerima endpoint SOAP—misalnya konverter mata uang lama untuk tim penagihan atau layanan manajemen pesanan dari mitra .NET. Anda perlu memanggilnya, memverifikasi responsnya sesuai kontrak, dan menjalankan pengujian berulang saat kode di sekitarnya berubah. Tidak seperti REST, SOAP memerlukan amplop XML lengkap, Content-Type yang tepat, serta WSDL yang mendefinisikan operasi dan parameternya.
Apidog mendukung SOAP dan WebService bersama REST, GraphQL, serta gRPC dalam satu workspace. Artikel ini membahas dua cara kerja: mengirim permintaan SOAP secara manual dan mengimpor WSDL agar endpoint serta environment dibuat dari kontrak layanan. Untuk konteks protokol, lihat perbandingan REST, GraphQL, gRPC, dan SOAP. Untuk struktur amplop formal, gunakan spesifikasi W3C SOAP.
Apa itu SOAP, dan mengapa penanganannya berbeda?
SOAP (Simple Object Access Protocol) adalah protokol komunikasi berbasis XML yang memungkinkan sistem dari platform dan bahasa berbeda saling berkomunikasi melalui kontrak yang sama. Contohnya, klien Java dapat berkomunikasi dengan layanan .NET tanpa mengetahui implementasi internal masing-masing.
Saat menguji SOAP, perhatikan tiga hal berikut:
- Format pesan adalah XML. Permintaan dan respons berupa dokumen XML terstruktur, bukan JSON. Jika Anda belum familiar dengan XML, gunakan referensi XML MDN.
- Transport biasanya HTTP atau HTTPS. SOAP dapat menggunakan transport lain, tetapi HTTP/HTTPS adalah yang paling umum.
- Kontraknya ketat. Struktur amplop, namespace, nama operasi, dan parameter harus cocok dengan definisi layanan.
Karena itu, Anda tidak dapat mengirim permintaan REST biasa ke endpoint SOAP. Anda memerlukan header yang benar, body XML di dalam amplop SOAP, serta validasi terhadap XML respons. Untuk memahami struktur amplop lebih lanjut, lihat API SOAP dan XML.
Sebelum memulai
Untuk mengirim permintaan SOAP atau WebService, gunakan Apidog versi 2.1.31 atau lebih baru. Periksa versi aplikasi Anda dan lakukan pembaruan bila diperlukan.
Siapkan juga informasi berikut dari layanan target:
- URL endpoint
- Nama operasi SOAP
- Parameter operasi
- File WSDL, jika tersedia
Simpan file WSDL di lokasi yang mudah diakses karena Anda dapat mengimpornya langsung ke Apidog.
Jalur A: Kirim permintaan SOAP secara manual
Pilih jalur ini jika Anda sudah mengetahui URL endpoint dan operasi yang akan dipanggil.
Langkah 1: Atur header Content-Type
SOAP tidak secara otomatis menentukan Content-Type. Tambahkan header berikut secara manual di tab Headers:
Content-Type: text/xml; charset=utf-8
atau:
Content-Type: application/soap+xml
Gunakan panduan berikut:
| Versi SOAP | Content-Type umum |
|---|---|
| SOAP 1.1 | text/xml; charset=utf-8 |
| SOAP 1.2 | application/soap+xml |
Periksa WSDL atau dokumentasi layanan untuk memastikan nilai yang benar. Jika server mengembalikan kesalahan tipe konten, coba nilai yang sesuai dengan versi SOAP lainnya.
Langkah 2: Atur body ke xml dan masukkan amplop SOAP
Pada bagian Body, pilih format xml. Kemudian masukkan amplop SOAP yang berisi operasi dan parameternya.
Contoh berikut memanggil operasi NumberToWords pada layanan publik number-to-words:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:web="http://www.dataaccess.com/webservicesserver/">
<soap:Body>
<web:NumberToWords>
<web:ubiNum>1234</web:ubiNum>
</web:NumberToWords>
</soap:Body>
</soap:Envelope>
Struktur pentingnya:
-
soap:Envelope: pembungkus seluruh pesan SOAP. -
soap:Body: tempat operasi SOAP ditulis. -
web:NumberToWords: nama operasi. -
web:ubiNum: parameter input. -
xmlns:web: namespace operasi yang harus sesuai dengan kontrak layanan.
Jangan menebak namespace. Ambil nilai namespace, nama operasi, dan parameter langsung dari WSDL.
Langkah 3: Kirim dan verifikasi respons XML
Kirim permintaan. Respons SOAP juga berbentuk amplop XML:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<m:NumberToWordsResponse xmlns:m="http://www.dataaccess.com/webservicesserver/">
<m:NumberToWordsResult>one thousand two hundred and thirty four</m:NumberToWordsResult>
</m:NumberToWordsResponse>
</soap:Body>
</soap:Envelope>
Verifikasi setidaknya tiga hal:
- Respons memiliki elemen
soap:Envelopedansoap:Body. - Operasi respons tersedia, misalnya
NumberToWordsResponse. - Nilai hasil, misalnya
NumberToWordsResult, sesuai dengan ekspektasi.
Untuk referensi konfigurasi dan contoh amplop tambahan, lihat webservice.apidog.io.
Pola ini dapat diterapkan ke layanan lain. Contohnya:
-
ConvertCurrencydengan parameterfromCurrency,toCurrency, danamount. -
GetOrderStatusdengan parameterorderId.
Alurnya tetap sama:
- Atur header.
- Masukkan amplop XML.
- Kirim permintaan.
- Validasi amplop respons dan nilai hasil.
Jalur B: Impor WSDL untuk menghasilkan endpoint
Menulis amplop secara manual cocok untuk satu atau dua operasi. Jika layanan memiliki banyak operasi, impor WSDL agar Apidog membaca kontrak layanan dan membuat endpoint secara otomatis.
WSDL mendefinisikan operasi, input, output, dan alamat layanan. Ikuti langkah berikut:
- Buka Settings lalu Import Data.
- Pilih WSDL.
- Unggah file
.wsdlatau.xml. - Tinjau pratinjau endpoint API yang diurai dari file.
- Buka tab Environments dan verifikasi alamat layanan.
- Klik Konfirmasi untuk membuat environment hasil impor.
- Pilih environment yang diimpor dari sudut kanan atas.
- Kirim permintaan ke endpoint yang dihasilkan.
Dua langkah yang paling penting adalah memverifikasi environment dan memilih environment aktif.
Verifikasi alamat layanan sebelum konfirmasi
Alamat layanan di WSDL menjadi endpoint dasar untuk permintaan yang diimpor. Jika WSDL masih menunjuk ke staging, localhost, atau URL placeholder, semua permintaan akan dikirim ke server yang salah.
Sebelum mengklik Konfirmasi:
- Buka tab Environments.
- Periksa Base URL.
- Ganti alamatnya jika diperlukan.
- Baru konfirmasi impor.
Aktifkan environment yang diimpor
Setelah impor selesai, pilih environment tersebut dari pemilih environment di sudut kanan atas. Base URL endpoint hasil impor bergantung pada environment ini.
Jika environment tidak aktif, permintaan dapat gagal karena tidak memiliki alamat dasar yang benar.
Setelah WSDL diimpor, Anda dapat mengirim setiap operasi tanpa menulis amplop dari awal. Tetap tambahkan validasi terhadap respons XML seperti pada Jalur A. Jika Anda memigrasikan proyek dari alat lain, baca panduan mengimpor proyek SOAP.
Impor WSDL yang didokumentasikan mendukung unggahan file
.wsdldan.xml. Impor melalui URL atau menempelkan isi WSDL tidak didokumentasikan, jadi gunakan file lokal.
Beralih dari SoapUI
Jika pengujian SOAP Anda saat ini ada di SoapUI, Anda tidak perlu membuat ulang semua operasi dari nol.
Alur migrasinya:
- Ekspor atau simpan file WSDL dari proyek SoapUI.
- Impor file tersebut melalui jalur WSDL di Apidog.
- Periksa environment dan Base URL.
- Jalankan operasi yang dihasilkan.
- Tambahkan atau pindahkan skenario pengujian sesuai kebutuhan.
Dengan pendekatan ini, layanan SOAP, endpoint REST, dokumentasi, mocking, dan skenario pengujian dapat berada dalam satu workspace. Untuk detail perbedaannya, lihat Apidog versus SoapUI.
Tambahkan penegasan pada respons SOAP
Permintaan yang berhasil hanya membuktikan bahwa endpoint dapat dihubungi. Pengujian yang baik juga membuktikan bahwa respons tetap memenuhi kontrak.
Tambahkan penegasan untuk:
- Memastikan node operasi respons ada.
- Mengekstrak elemen hasil.
- Memverifikasi nilai hasil terhadap aturan bisnis.
- Memastikan struktur XML tidak berubah secara tak terduga.
Contoh aturan validasi:
| Layanan | Validasi yang dapat diterapkan |
|---|---|
| Konversi mata uang | Nilai hasil berupa angka dan berada dalam rentang yang masuk akal. |
| Status pesanan | Nilai status termasuk dalam daftar status yang diizinkan. |
| Data pelanggan | Node pelanggan wajib tersedia dan memiliki ID yang valid. |
Selanjutnya, rangkai panggilan dalam skenario pengujian. Misalnya:
- Buat pesanan.
- Simpan ID pesanan dari respons.
- Panggil
GetOrderStatus. - Kirim ID pesanan yang diekstrak ke langkah berikutnya.
- Validasi status pesanan.
Panduan menulis skenario pengujian dengan Apidog menunjukkan cara meneruskan nilai antarpermintaan. Pola ini tidak bergantung pada protokol, sehingga satu skenario dapat menggabungkan SOAP dan REST.
Menangani endpoint SOAP dengan WS-Security
Layanan SOAP yang aman sering menggunakan WS-Security untuk autentikasi dan pengiriman pesan terenkripsi. Dalam SOAP, informasi keamanan biasanya ditambahkan ke bagian header amplop.
Struktur umumnya seperti ini:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<soap:Header>
<wsse:Security>
<!-- Header keamanan sesuai kebutuhan layanan -->
</wsse:Security>
</soap:Header>
<soap:Body>
<!-- Operasi SOAP -->
</soap:Body>
</soap:Envelope>
Mekanisme pengirimannya tidak berubah:
- Atur
Content-Type. - Gunakan body
xml. - Sertakan header keamanan dalam amplop SOAP.
- Kirim dan validasi respons.
Gunakan struktur dan nilai WS-Security yang diwajibkan oleh dokumentasi layanan Anda.
Otomatiskan alur kerja dengan Apidog CLI
Setelah permintaan atau hasil impor WSDL disimpan sebagai skenario pengujian, Anda dapat menjalankannya dari command line dengan Apidog CLI.
Instal CLI menggunakan Node.js v16 atau lebih baru:
npm install -g apidog-cli
apidog login --with-token <YOUR_ACCESS_TOKEN>
Jalankan skenario tersimpan pada environment tertentu:
apidog run --access-token $APIDOG_ACCESS_TOKEN -t <scenario_id> -e <env_id> -r cli
Parameter yang digunakan:
| Parameter | Fungsi |
|---|---|
-t |
ID skenario pengujian |
-e |
ID environment |
-r |
Reporter: cli, html, atau junit
|
Anda dapat menentukan beberapa reporter dengan pemisah koma.
Dokumentasi mengonfirmasi bahwa runner dapat menjalankan skenario dan suite pengujian yang disimpan. Namun, dokumentasi tersebut tidak secara eksplisit menyatakan apakah skenario dengan langkah SOAP berjalan secara headless. Gunakan CLI untuk menjalankan skenario HTTP proyek dan integrasikan validasi yang relevan ke CI. Untuk pipeline, lihat panduan CI/CD Apidog CLI.
FAQ
Content-Type mana yang digunakan untuk SOAP?
Gunakan salah satu dari berikut:
text/xml; charset=utf-8
application/soap+xml
SOAP 1.1 umumnya menggunakan text/xml; charset=utf-8, sedangkan SOAP 1.2 umumnya menggunakan application/soap+xml. Periksa WSDL atau dokumentasi layanan jika tidak yakin.
Apakah pengujian SOAP memerlukan paket berbayar?
Persyaratan yang didokumentasikan adalah Apidog versi 2.1.31 atau lebih baru. Tidak disebutkan pembatasan tingkatan atau batasan self-hosted khusus untuk dukungan SOAP dan WSDL.
Bisakah WSDL diimpor dari URL?
Impor WSDL yang didokumentasikan menerima unggahan file .wsdl dan .xml. Impor melalui URL atau menempelkan isi WSDL tidak didokumentasikan, jadi unggah file WSDL secara langsung.
Bagaimana menguji SOAP dan REST dalam proyek yang sama?
Gunakan satu workspace untuk operasi SOAP, endpoint REST, dan permintaan GraphQL. Anda juga dapat merangkai semuanya dalam satu skenario pengujian. Untuk GraphQL, lihat panduan pengujian API GraphQL di Apidog.
Mengapa endpoint hasil impor WSDL mengarah ke server yang salah?
Periksa dua hal:
- Alamat layanan di tab Environments mungkin salah saat impor.
- Environment hasil impor mungkin belum dipilih sebagai environment aktif.
Verifikasi Base URL sebelum konfirmasi impor, lalu pastikan environment yang benar dipilih sebelum mengirim permintaan.
Ringkasan
Pengujian SOAP tidak harus bergantung pada alat terpisah. Dengan Apidog, Anda dapat:
- Mengirim amplop SOAP secara manual dengan header dan body XML yang benar.
- Mengimpor WSDL untuk membuat endpoint serta environment otomatis.
- Menambahkan penegasan respons XML.
- Merangkai operasi SOAP dalam skenario pengujian.
- Menjalankan skenario tersimpan dari command line melalui CLI.
Gunakan Apidog versi 2.1.31 atau lebih baru, impor WSDL Anda, lalu uji layanan SOAP lama dengan alur validasi yang sama seperti API lain di proyek Anda.
Top comments (0)