Saya telah mengimplementasikan REST API sebelumnya dan saya sangat menyukainya. Secara umum ketika Anda menerapkan REST lebih dari SOAP, klien / server Anda lebih ortogonal yang berarti bahwa Anda dapat lebih bebas mengubah server tanpa mempengaruhi klien Anda. Ortogonalitas ini adalah karena menggunakan komunikasi yang lebih abstrak dan sudah didefinisikan dengan baik melalui kata kerja HTTP. Selain itu, penggunaan hyperlink yang tertanam dalam respons REST Anda membuatnya lebih mudah untuk memperpanjang dan menumbuhkan API Anda yang relatif bebas rasa sakit. Klien seharusnya mengikuti tautan tersemat ini untuk mendapatkan sumber daya baru seperti manusia akan mengikuti tautan pada laman web untuk 'menelusuri' untuk informasi lebih lanjut.
Dengan mengatakan itu, saya memiliki beberapa rekan kerja yang diberitahu bahwa mereka harus menggunakan sabun dan mereka mengeluh tentang hal itu sepanjang waktu. Jadi saya meneliti keduanya lebih detail.
Secara umum yang saya temukan adalah bahwa REST sangat cocok untuk aplikasi yang sangat terdistribusi , ketika Anda memiliki ratusan, ribuan atau jutaan klien . Salah satu alasannya adalah orthogonality yang disebutkan di atas, yang lain adalah caching yang Anda dapatkan secara gratis karena Anda menggunakan HTTP.
SOAP mungkin menjadi cara yang lebih cepat untuk pergi ketika Anda membutuhkan API yang lebih kecil untuk satu atau dua klien dengan cepat dan Anda tidak terlalu khawatir tentang skalabilitas. Mungkin juga lebih cocok untuk Anda jika Anda tidak memiliki arsitektur yang terstruktur di sekitar sumber daya , karena mungkin Anda perlu waktu untuk merestrukturisasi aplikasi Anda untuk bahkan dapat mengimplementasikan REST.
Ini mungkin poin kecil, tetapi REST sepenuhnya didasarkan pada HTTP.
SOAP tidak memerlukan HTTP, dan Anda bebas menggunakan transportasi apa pun yang Anda suka.
Pesan SOAP dapat dialihkan secara tidak sinkron dan andal sedangkan REST adalah paradigma yang sangat sinkron.
REST tidak memberi tahu Anda apa pun tentang seperti apa data yang Anda kirim dan terima. Ada WADL, tetapi kebanyakan Anda mengandalkan dokumentasi dari API yang benar. SOAP memiliki sirkus teknologi XML untuk membuat deskripsi data lebih rentan terhadap kesalahan. WSDL, Skema ...
Pada akhirnya REST pada dasarnya memberi Anda sistem file berdasarkan HTTP. Jika sistem Anda dapat masuk ke dalam paradigma itu - maka itu mungkin merupakan pilihan yang baik.
sumber
Perbedaan terbesar antara keduanya adalah bahwa REST seharusnya menjadi stateless, sedangkan SOAP tidak . Dalam praktiknya banyak implementasi REST yang benar-benar mengimplementasikan beberapa status dalam sesi melalui sesuatu seperti OAuth.
Perbedaan lainnya adalah REST sangat "resource" atau berorientasi kata benda . Anda berinteraksi dengan sumber daya melalui operasi CRUD. Apa pun yang tidak sesuai dengan paradigma ini menjadi rumit dan canggung.
SOAP di sisi lain hanyalah protokol RPC (panggilan prosedur jarak jauh) . Itu tidak datang dengan paradigma, itu hanya lapisan transport.
sumber
REST juga menggunakan postingan. Faktanya ketika menggunakan REST, kata kerja http memberi tahu Anda operasi apa yang sedang terjadi.
REST dan SOAP hanyalah standar berbeda untuk mengirimkan data melalui internet.
Setelah menggunakan keduanya, saya biasanya akan merekomendasikan menggunakan REST daripada SOAP kecuali Anda tahu orang-orang yang akan mengkonsumsi layanan web Anda menggunakan .net dan Visual Studio. Umumnya jauh lebih mudah untuk mengkonsumsi layanan web REST kecuali dengan .net VS yang melakukan sebagian besar pekerjaan untuk Anda ketika Anda menggunakan SOAP.
sumber
Satu hal yang akan saya sebutkan adalah interoperabilitas - jika Anda akan memanggil layanan Anda dari aplikasi yang ditulis dalam .NET dan server ditulis dalam Java (atau kombinasi lainnya) maka pilih REST. Saya telah melihat terlalu banyak sedikit ketidaksesuaian antara implementasi SOAP sehingga sulit untuk mempertimbangkannya lagi.
sumber
Jika Anda hanya menginginkan panduan visual sederhana untuk membantu Anda mengukur SOAP dan REST terhadap persyaratan aplikasi Anda ...
Vijay Prasad Gupta telah menyusun bagan alur yang sederhana dan bermanfaat.
Tautan langsung ke diagram alir: https://drive.google.com/file/d/0B3zMtAq1Rf-sdVFNdThvNmZWRGc/edit
Tautan ke artikel: https://www.linkedin.com/pulse/20140818062318-7933571-soap-vs-rest-flowchart-to-determine-the-right-web-services-protocol-for-your-needs
sumber
Sekarang tahun 2015. Saya berharap bahwa sabun telah mati sekarang, tetapi masih tetap seperti bau busuk. Untuk apa pun kecuali yang paling dasar dari aplikasi "contoh", mengintegrasikan dengan layanan SOAP penuh dengan tantangan. Ini adalah arsitektur yang kompleks, dengan banyak pilihan di berbagai tingkatan, dikombinasikan dengan keunikan dari berbagai implementasi dan ketidakcocokan yang halus (dan tidak begitu halus). Saya tidak pernah memiliki satu pun pengalaman bagus dengannya. REST, di sisi lain, sangat mudah: semua orang mengerti HTTP. Untuk sebagian besar kasus, JSON memiliki lebih banyak utilitas daripada XML InfoSet.
Untuk memberi Anda gambaran tentang kompleksitas SOAP, coba mengintegrasikan perpustakaan SOAP ke proyek Anda. Untuk Java, klien Apache Axis2 paling mendasar (menggunakan pengikatan data ADB sederhana) menarik 23 JAR baru. Dua puluh tiga! 20MB perpustakaan mengasapi. CXF serupa: 21 JAR, ketika saya terakhir menghitung.
Jika Anda benar-benar ingin, Anda dapat melakukan REST dengan perpustakaan HTTP sederhana.
sumber