SOAP dan REST API - apa perbedaannya?
Meskipun SOAP API dan REST API sebenarnya melakukan fungsi yang sama, ada lebih banyak perbedaan daripada persamaan di antara mereka, dan perbedaan itu dimulai dengan definisi. Jadi, jika SOAP adalah protokol yang dirancang untuk menstandarkan pertukaran data antar layanan web, terlepas dari bahasa apa mereka ditulis, maka REST adalah gaya arsitektur layanan web, yang menyiratkan sejumlah batasan sesuai dengan yang layanan web dibuat ...
Secara khusus, Zimbra REST API dan SOAP API berbeda dalam cakupannya. REST API digunakan di sini hanya untuk operasi CRUD, yaitu untuk membuat, membaca, memperbarui, dan menghapus objek di server. Oleh karena itu, REST API digunakan terutama untuk membuat integrasi sederhana dengan sistem pihak ketiga, karena memungkinkan Anda mengunduh data dari Zimbra dalam berbagai format, seperti xml, json, rss, html, zip, tar, tgz, ics, ifb , csv dan lainnya, dan juga mengimpor data ke Zimbra. SOAP API dapat digunakan untuk operasi lain selain mengelola data kotak surat. Perbedaan signifikan lainnya adalah REST kurang aman dibandingkan SOAP.
API berbeda dari baris perintah, yang di Zimbra OSE memiliki lebih banyak fungsi dan mendukung pembentukan skrip bash, karena operasinya tidak memerlukan akses ke akun sistem Zimbra di server email.
REST API
REST API direpresentasikan dalam Zimbra OSE dengan serangkaian metode untuk bekerja dengan email, kalender, tugas, dan kontak. Diantara mereka:
- Dapatkan Folder - ekspor konten folder email
- Impor Pesan - impor pesan ke folder email
- Dapatkan Kontak - ekspor kontak
- Impor Kontak - impor kontak
- Dapatkan Kalender - ekspor kalender
- Dapatkan FreeBusy - Ekspor Data Bebas Sibuk
- Impor Janji Temu - impor data rapat
- Dapatkan Tugas - tugas ekspor
- Dapatkan Barang - ekspor barang
Semua metode di atas memerlukan otentikasi pengguna. Itu dapat dilakukan dengan menambahkan data otentikasi ke string kueri, serta setelah menerima token otentikasi, gunakan untuk masuk ke server. Anda bisa mendapatkan token dengan memasukkan data otentikasi administrator server, serta dengan memasukkan data otentikasi pengguna untuk siapa token dikeluarkan:
curl --user 'admin:p@$$w0rD' -k 'https://example.ru/home/user@example.ru/Inbox/?fmt=sync&auth=sc' -c '~/token.txt' curl --user 'user:qwerty123' -k 'https://example.ru/home/user@example.ru/Inbox/?fmt=sync&auth=sc' -c '~/token.txt'
Hasil dari perintah ini adalah pembuatan file token.txt di folder home pengguna yang akan berisi token otentikasi. Harap dicatat bahwa token ini memiliki tanggal kedaluwarsa yang terbatas dan setelah periode ini Anda perlu mengeluarkan token baru untuk mengakses kotak surat Zimbra melalui permintaan REST. Token itu sendiri adalah string 313 karakter yang dimulai dengan '0_'.
Setelah menyalin token ini, Anda dapat menggunakannya untuk mengakses data kotak surat melalui REST API. Misalnya, Anda bisa mendapatkan konten Kotak Masuk pengguna Zimbra menggunakan perintah seperti curl -k 'https://example.ru/home/user@example.ru/Inbox/?fmt=rss&auth=qp&zauthtoken=0_xxx'> ~ / kotak masuk xml, di mana 0_xxx adalah token autentikasi, auth = qp adalah metode autentikasi token, fmt = rss adalah format output, dan ~ / inbox xml adalah file tempat konten Kotak Masuk akan diekspor.
Dengan menambahkan berbagai argumen ke permintaan REST, Anda dapat mengekspor sebagian data dari Kotak Masuk. Sebagai contoh:
- example.ru : 7070/home/user@example.ru/inbox? fmt = xml & query = persetujuan - tautan ini dalam permintaan REST akan memungkinkan Anda untuk menerima dalam bentuk file xml semua surat pengguna dari folder Kotak Masuk yang berisi kata "perjanjian"
- example.ru : 7070/home/user@example.ru/inbox? fmt = xml & query = subject: agreement - memungkinkan Anda menerima dalam bentuk file xml semua surat pengguna dari folder Inbox, yang subjeknya berisi kata "perjanjian"
- example.ru:7070/home/user@example.ru/inbox?fmt=xml&query=is:unread โ xml- ยซยป
Untuk mengekspor kontak pengguna, gunakan tautan ke folder kontaknya curl -k 'https://example.ru:7070/home/user@example.ru/contacts?fmt=csv&auth=qp&zauthtoken=0_xxx'> ~ / kontak .csv CURL
juga digunakan untuk mengimpor kontak. Misalnya, menggunakan perintah curl -k --upload-file ~ / contacts.csv 'https://example.ru:7070/home/user@example.ru/contacts?fmt=csv&auth=qp&zauthtoken=0_xxx Anda dapat mengimpor CSV -file dengan kontak.
Nilai utama dari REST API adalah bahwa semua operasi yang dilakukan dengan menggunakannya cocok untuk otomatisasi menggunakan skrip bash biasa. Misalnya, jika Anda mendapatkan seluruh daftar pengguna dengan perintah zmprov -l gaa>pengguna.txt, maka Anda dapat menggunakan file yang dihasilkan untuk eksekusi berurutan dari operasi rutin. Misalnya, untuk mengimpor kontak ke buku alamat, mengekspor email, dan sebagainya. Oleh karena itu, REST API dapat digunakan untuk menulis aplikasi CRUB yang paling sederhana dan paling sederhana untuk sinkronisasi data antara berbagai sistem informasi di perusahaan. Untuk membuat program berdasarkan REST API, sebaiknya gunakan program SoapUI gratis dan gratis , yang memungkinkan Anda membuat permintaan SOAP dan REST secara visual dan melihat responsnya.
SOAP API
SOAP API jauh lebih kompleks untuk digunakan daripada REST API, tetapi memiliki lebih banyak fitur. Selain mengelola data yang disimpan di server, SOAP API memungkinkan Anda untuk mengelola akun, domain, bahkan menyediakan akses ke semua fungsi Zimbra. Inilah sebabnya mengapa SOAP API digunakan untuk menulis aplikasi klien yang lebih kompleks. Misalnya, untuk mengubah pengaturan akun dan karenanya digunakan untuk membuat aplikasi yang lebih canggih. Misalnya, klien web Zimbra OSE berkomunikasi dengan server menggunakan SOAP API.
Seperti disebutkan di atas, SOAP adalah protokol untuk pertukaran pesan xml yang terstruktur secara kaku, di mana satu aplikasi dapat mengirimkan data ke yang lain. Transportasi untuk mengirimkan pesan SOAP biasanya HTTP.
SOAP API di Zimbra OSE dipecah menjadi beberapa bagian konstituen. Diantara mereka:
- zimbraAccount - satu set metode SOAP yang bertanggung jawab untuk berinteraksi dengan akun pengguna
- zimbraAdmin - seperangkat metode SOAP yang bertanggung jawab untuk melakukan tindakan administratif administrative
- ZimbraMail adalah seperangkat metode SOAP yang bertanggung jawab untuk mengelola data di server.
Untuk bekerja dengan baik dengan SOAP API, Anda memerlukan file WSDL: xml, yang menjelaskan metode SOAP yang tersedia untuk Zimbra. Anda dapat mengunduhnya langsung dari server Anda menggunakan tautan:
- WSDL untuk zimbraAdmin - SERVER / layanan / wsdl ANDA / ZimbraAdminService.wsdl
- WSDL untuk zimbraAccount - SERVER / layanan / wsdl ANDA / ZimbraUserService.wsdl
- WSDL untuk semua metode SOAP API - SERVER / layanan / wsdl / ZimbraService.wsdl ANDA
Anda juga memerlukan file xsd dengan deskripsi untuk berbagai bagian SOAP API. Anda juga dapat mengunduhnya dari server Anda menggunakan tautan berikut:
- SERVER / layanan / wsdl / zimbra.xsd ANDA
- SERVER / layanan / wsdl / zimbraAdmin.xsd ANDA
- SERVER / layanan / wsdl / zimbraAdminExt.xsd ANDA
- SERVER / layanan / wsdl / zimbraMail.xsd ANDA
- SERVER / layanan / wsdl / zimbraRepl.xsd ANDA
- SERVER / layanan / wsdl / zimbraSync.xsd ANDA
- SERVER / layanan / wsdl / zimbraVoice.xsd ANDA
Setelah mengimpor WSDL ke SoapUI, toolbar muncul di dalamnya dengan metode untuk Zimbra OSE dan Anda dapat membuat berbagai aplikasi darinya. Mempertimbangkan kemampuan ekstensif yang disediakan oleh SOAP API, menjadi mungkin untuk membuat aplikasi tidak hanya untuk mengotomatisasi tugas untuk mengelola konten pengguna, tetapi juga untuk mengotomatiskan pengeditan berbagai pengaturan, membuat, menghapus, dan mengubah domain, pengguna, dan kelas layanan.
Sebagian besar permintaan SOAP memerlukan otentikasi. Ada metode SOAP Auth di zimbraAdmin dan zimbraAccount untuk ini. Contoh permintaan SOAP untuk otentikasi akan terlihat seperti ini
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:zimbra" xmlns:urn1="urn:zimbraAccount">
<soapenv:Header>
<urn:context xmlns:urn="urn:zimbra"/>
</soapenv:Header>
<soapenv:Body>
<urn1:AuthRequest xmlns:urn1="urn:zimbraAccount">
<urn1:account by="name">user@example.ru</urn1:account>
<urn1:password>qwerty123</urn1:password>
</urn1:AuthRequest>
</soapenv:Body>
</soapenv:Envelope>
Dalam contoh ini, user@example.ru adalah nama pengguna dan qwerty123 adalah kata sandinya. Juga, di bilah alamat permintaan, jangan lupa untuk menentukan https sebagai metode koneksi, jika tidak, Anda mungkin mengalami pemutusan dari sisi Zimbra. Respons dari server akan terlihat seperti ini:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<context xmlns="urn:zimbra">
<change token="5489"/>
</context>
</soap:Header>
<soap:Body>
<AuthResponse xmlns="urn:zimbraAccount">
<authToken>0_xxx</authToken>
<lifetime>172799986</lifetime>
<skin>zextras</skin>
</AuthResponse>
</soap:Body>
</soap:Envelope>
Ini berisi token otentikasi di lapangan, tanggal kedaluwarsa token ini (seumur hidup) dalam milidetik, dan nama kulit yang digunakan.
Sebagai contoh, mari kita buat permintaan untuk mengirim email ke Zimbra OSE. Contoh permintaan SOAP yang sesuai akan terlihat seperti ini:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:zimbra" xmlns:urn1="urn:zimbraMail">
<soapenv:Header>
<context xmlns="urn:zimbra">
<authToken>0_xxx</authToken>
</context>
</soapenv:Header>
<soapenv:Body>
<SendMsgRequest xmlns="urn:zimbraMail">
<m su="">
<content></content>
<e a="admin@example.ru" t="f" p="admin" />
<e a="ivanov@example.ru.com" t="t" p="Ivanov" />
</m>
</SendMsgRequest>
</soapenv:Body>
</soapenv:Envelope>
Di sini, di bidang authToken, Anda harus menentukan token otentikasi yang diterima sebelumnya, di bidang SendMsgRequest, tentukan subjek dan teks surat, serta akun dan nama pengirim dan penerima.
Dalam hal ini, kami telah mengkompilasi beberapa permintaan SOAP dan REST secara manual untuk Zimbra. Namun, pembentukannya dapat diotomatisasi dengan membuat skrip dalam berbagai bahasa pemrograman. Tentang ini di salah satu artikel kami berikutnya.