Saya akan mempelajari layanan web RESTful (lebih baik mengatakan bahwa saya harus melakukan ini karena ini adalah bagian dari program gelar master Ilmu Komputer).
Saya telah membaca beberapa info di Wikipedia dan saya juga membaca artikel tentang REST di Sun Developer Network dan saya melihat bahwa ini bukanlah teknologi yang mudah, ada kerangka kerja khusus untuk membangun aplikasi RESTful, dan ini sering dibandingkan dengan layanan web SOAP dan programmer harus memahami kapan harus menggunakan SOAP dan kapan REST bisa menjadi pendekatan yang bagus.
Saya ingat beberapa tahun yang lalu SOAP sangat populer (fashionable?) Dan item 'SOAP' harus ada di setiap CV yang bagus. Namun dalam praktiknya, ini sangat jarang digunakan dan untuk mencapai tujuan yang sangat sederhana.
Tampak bagi saya bahwa REST adalah 'kata terakhir mode' lainnya (atau saya bisa salah total karena saya belum pernah melihat REST dalam latihan).
Dapatkah Anda memberi saya beberapa contoh apakah REST harus digunakan dan mengapa kita tidak dapat melakukan hal yang sama tanpa REST (atau mengapa kita harus menghabiskan lebih banyak waktu untuk melakukan hal yang sama tanpa REST)?
UPD : Sayangnya saya tidak bisa melihat argumen konkret yang bisa membuat saya terheran-heran di komentar pertama. Buat saya berpikir bahwa REST adalah teknologi yang luar biasa!
Saya ingin melihat jawaban seperti ini:
Saya sedang mengembangkan aplikasi HelloWorld kompleks lainnya dan kami perlu mentransfer banyak / data kecil dan saya mengusulkan solusi REST kepada rekan kerja saya:
- Oh sial! Jonny, kita pasti harus menggunakan REST untuk mengimplementasikan aplikasi ini!
- Ya, Billy, kita bisa menggunakan REST, tapi sebaiknya kita menggunakan SOAP. Percayalah karena saya tahu sesuatu tentang mengembangkan aplikasi HelloWorld.
- Tapi SOAP adalah teknologi kuno dari abad terakhir dan kita bisa menggunakan yang lebih baik.
- Billy, apakah Anda siap menghabiskan 3 hari untuk bereksperimen dengan REST? Kita bisa melakukan ini dengan SOAP dalam 2 jam ..
- Ya, saya yakin kita akan menghabiskan lebih banyak waktu untuk mencapai keamanan / kinerja / / skalabilitas / apapun yang sama dengan SOAP. Saya yakin aplikasi HelloWorld seharusnya dikembangkan hanya dengan REST mulai sekarang.
sumber
Jawaban:
SISA harus digunakan jika sangat penting bagi Anda untuk meminimalkan coupling antara klien dan server komponen dalam aplikasi terdistribusi.
Ini mungkin terjadi jika server Anda akan digunakan oleh banyak klien berbeda yang tidak dapat Anda kendalikan. Mungkin juga terjadi jika Anda ingin dapat memperbarui server secara teratur tanpa perlu memperbarui perangkat lunak klien.
Saya dapat meyakinkan Anda bahwa mencapai tingkat rendah kopling adalah tidak mudah dilakukan . Sangat penting untuk mengikuti semua kendala REST agar berhasil. Mempertahankan koneksi murni tanpa kewarganegaraan itu sulit. Memilih jenis media yang tepat dan memasukkan data Anda ke dalam format itu rumit. Membuat jenis media Anda sendiri bisa jadi lebih sulit.
Mengadaptasi perilaku server yang kaya ke dalam antarmuka HTTP yang seragam dapat membingungkan dan terkadang tampak terlalu berlebihan dibandingkan dengan pendekatan RPC yang relatif mudah.
Terlepas dari kesulitannya, keuntungannya adalah Anda memiliki layanan yang harus dapat dipahami dengan mudah oleh pengembang klien karena penggunaan protokol HTTP yang konsisten. Layanan harus mudah ditemukan karena hypermedia dan klien harus sangat tahan terhadap perubahan di server .
Manfaat hypermedia dan penghindaran status sesi membuat penyeimbangan beban menjadi sederhana dan pemartisian layanan dapat dilakukan . Kepatuhan yang ketat terhadap aturan HTTP membuat ketersediaan alat seperti debugger dan proxy caching menjadi hal yang luar biasa.
Memperbarui
Saya pikir REST telah menjadi mode karena orang-orang yang mencoba melakukan proyek tipe SOA telah menemukan bahwa menggunakan tumpukan SOAP mereka tidak menyadari manfaat yang dijanjikan. Orang-orang terus kembali ke web sebagai contoh metodologi integrasi sederhana. Sayangnya, menurut saya orang meremehkan jumlah perencanaan dan pandangan ke depan yang digunakan untuk membuat web dan mereka terlalu menyederhanakan apa yang perlu dilakukan untuk memungkinkan jenis penggunaan kembali yang tidak disengaja yang terjadi di web.
Anda mengatakan bahwa Anda belum pernah melihat REST dalam praktiknya, tetapi itu tidak mungkin benar jika Anda pernah menggunakan browser web. Browser web adalah klien REST.
Ini mungkin terdengar seperti pertanyaan yang tidak masuk akal, tetapi jika Anda tahu jawabannya, maka Anda dapat mulai melihat apa itu REST. Lihat StackOverflow untuk manfaat REST lainnya. Saat saya melihat sebuah pertanyaan, saya dapat menandai halaman itu atau mengirim url ke teman dan dia dapat melihat informasi yang sama. Dia tidak perlu menjelajahi situs untuk menemukan pertanyaan itu.
StackOverflow menggunakan berbagai layanan OpenId untuk otentikasi, gravatar.com untuk gambar avatar, google-analytics dan Quantserve untuk informasi analitis. Integrasi multi-perusahaan semacam ini adalah jenis hal yang hanya diimpikan oleh dunia SOAP . Salah satu contoh terbaik adalah fakta bahwa pustaka jQuery yang digunakan untuk menggerakkan UI StackOverflow diambil dari Jaringan Pengiriman Konten Google. Fakta bahwa SO dapat mengarahkan klien (yaitu browser web Anda) untuk mengunduh kode dari situs pihak ketiga untuk meningkatkan kinerja adalah bukti rendahnya hubungan antara klien web dan server.
Ini adalah contoh arsitektur REST yang sedang bekerja.
Sekarang beberapa situs web / aplikasi melanggar aturan REST dan kemudian browser tidak berfungsi seperti yang diharapkan.
REST ada dimana-mana. Ini adalah bagian dari web yang membuatnya berfungsi dengan baik. Jika Anda ingin membuat aplikasi terdistribusi yang dapat berskala seperti web, tahan terhadap perubahan seperti web dan promosikan penggunaan kembali seperti yang telah dilakukan web, kemudian ikuti aturan yang sama seperti yang mereka lakukan saat membuat browser web.
sumber
REST dimulai, sepengetahuan saya, oleh disertasi Roy Fielding, Gaya Arsitektur dan Desain Arsitektur Perangkat Lunak Berbasis Jaringan , yang patut dibaca jika Anda belum melihatnya.
Di bagian atas disertasi adalah kutipan:
Hampir semua orang merasa damai dengan alam: mendengarkan gelombang laut di tepi pantai, di tepi danau yang tenang, di padang rumput, di atas ombak yang tertiup angin. Suatu hari, ketika kita telah mempelajari cara abadi lagi, kita akan merasakan hal yang sama tentang kota-kota kita, dan kita akan merasakan kedamaian di dalamnya, seperti yang kita lakukan hari ini saat berjalan di tepi laut, atau berbaring di rerumputan yang panjang. padang rumput.
- Christopher Alexander, The Timeless Way of Building (1979)
Dan itu benar-benar merangkumnya di sana. REST dalam banyak hal lebih elegan.
SOAP adalah protokol di atas HTTP, jadi SOAP melewati banyak konvensi HTTP untuk membangun konvensi baru dalam SOAP, dan dalam beberapa hal berlebihan dengan HTTP. HTTP, bagaimanapun, lebih dari cukup untuk mengambil, mencari, menulis, dan menghapus informasi melalui HTTP, dan itulah sebagian besar dari REST. Karena REST dibangun dengan HTTP dan bukan di atasnya, itu juga berarti bahwa perangkat lunak yang ingin berintegrasi dengannya (seperti browser web) tidak perlu memahami SOAP untuk melakukannya, hanya HTTP, yang harus paling banyak dipahami secara luas dan terintegrasi-dengan protokol yang digunakan pada saat ini.
sumber
Dari sini :
Keuntungan REST:
Lihat juga ini :
sumber
Saya dapat dengan aman mengatakan saya telah menghabiskan banyak waktu untuk memahami ini sebagai pemula, tetapi ini adalah tautan terbaik untuk memulai dengan REST dari awal! http://www.codeproject.com/Articles/21174/Everything-About-REST-Web-Services-What-and-How-Pa
Hanya untuk menarikmu masuk,
sumber
Berikut beberapa ide:
Intinya, REST menghapus banyak keputusan desain dan implementasi yang paling memakan waktu dan kontroversial dari alur kerja tim Anda. Ini mengalihkan perhatian Anda dari menerapkan layanan ke mendesainnya . Dan itu melakukannya tanpa menumpuk gobbledygook ke protokol HTTP.
sumber
MakeOrder
memberikan URL untukConfirmOrder
danCancelOrder
? Apakah klien belum mengetahui cara memanggil layanan, melainkan perlu menggunakan data-driven?Sebagian besar jawaban "pro" tentang REST tampaknya berasal dari orang-orang yang belum pernah mengembangkan layanan web atau klien SOAP menggunakan lingkungan yang menyediakan alat yang sesuai untuk tugas tersebut. Mereka mengeluh tentang masalah yang belum pernah saya temui, menggunakan Visual Studio .NET dan Pengembang Web Rasional IBM. Saya kira jika Anda harus mengembangkan layanan web atau klien dalam bahasa scripting, atau bahasa lain dengan sedikit atau tanpa dukungan alat, ini adalah keluhan yang valid.
Saya juga harus mengakui bahwa beberapa poin "pro" terdengar seperti hal-hal yang mungkin benar-benar benar - tetapi saya belum pernah melihat contoh yang menggambarkan nilainya. Secara khusus, saya akan sangat menghargai jika seseorang akan mengirim komentar yang berisi tautan ke contoh yang baik dari layanan web REST. Ini harus salah satu yang menggunakan beberapa tingkat sumber daya, mungkin dalam hierarki, dan yang menggunakan jenis media dengan benar. Mungkin jika saya melihat contoh yang baik, saya akan mengerti, dalam hal ini, saya akan kembali ke sini dan mengakuinya.
sumber
Untuk menambahkan sedikit putaran biasa pada jawaban yang sudah diberikan alasan kami menggunakan layanan REST di mana saya berada adalah bahwa jika Anda tahu Anda dapat memberikan URL kepada mitra bisnis dan tahu mereka akan menerima, sebagai gantinya, lempengan XML yang ditata dengan baik tidak peduli apakah mereka bekerja di .Net xx, PHP, Python, Java, Ruby atau entah apa itu sangat mengurangi sakit kepala.
Ini juga berarti bahwa di sisi non-teknologi, staf penjualan kami dapat membual tentang API serbaguna kami kepada orang-orang tanpa takut terlihat seperti muppets lengkap.
Terlepas dari manfaat teknis, apa pun yang mudah bagi non-teknisi untuk menjelaskan, mendemonstrasikan, dan merasa percaya diri adalah hal yang baik. SOAP, meskipun sama kerennya untuk teknisi jauh lebih sulit didekati oleh non-teknisi dan oleh karena itu tidak mudah untuk "menjual".
Saya cenderung memperhatikan bahwa hal-hal yang bukan teknisi bisa membuat kepala mereka bulat cenderung melekat. Jadi saya ragu REST sebagai teknik yang rentan seperti SOAP terhadap keinginan mode.
Tetapi semua hal tentang tidak menempatkan apa pun dalam layanan REST yang harus dikunci adalah benar ganda jika hanya karena teknologinya sangat mudah dipahami oleh orang-orang yang tidak begitu berpikiran teknis.
sumber
REST adalah gaya arsitektur untuk mendesain aplikasi jaringan. Idenya adalah bahwa, daripada menggunakan mekanisme kompleks seperti CORBA, RPC atau SOAP untuk menghubungkan antar mesin, HTTP sederhana digunakan untuk melakukan panggilan antar mesin.
Dalam banyak hal, World Wide Web sendiri, berdasarkan HTTP, dapat dilihat sebagai arsitektur berbasis REST. Aplikasi RESTful menggunakan permintaan HTTP untuk mengirim data (membuat dan / atau memperbarui), membaca data (misalnya membuat kueri), dan menghapus data. Jadi, REST menggunakan HTTP untuk keempat operasi CRUD (Buat / Baca / Perbarui / Hapus).
REST adalah alternatif ringan untuk mekanisme seperti RPC (Remote Procedure Calls) dan Web Services (SOAP, WSDL, et al.). Nanti, kita akan melihat betapa REST jauh lebih sederhana.
Meskipun sederhana, REST memiliki fitur lengkap; pada dasarnya tidak ada yang dapat Anda lakukan di Layanan Web yang tidak dapat dilakukan dengan arsitektur RESTful. REST bukanlah "standar". Tidak akan pernah ada rekomendasi W3C untuk REST, misalnya. Dan meskipun ada kerangka kerja pemrograman REST, bekerja dengan REST sangat sederhana sehingga Anda sering dapat "menggulung milik Anda sendiri" dengan fitur pustaka standar dalam bahasa seperti Perl, Java, atau C #.
sumber