Saya memiliki layanan web yang menerima parameter JSON dan memiliki URL khusus untuk metode, misalnya:
http://IP:PORT/API/getAllData?p={JSON}
Ini jelas bukan REST karena bukan tanpa kewarganegaraan. Ini memperhitungkan cookie dan memiliki sesinya sendiri.
Apakah RPC? Apa perbedaan antara RPC dan REST?
web-services
rest
rpc
Mazmart
sumber
sumber
Jawaban:
Anda tidak dapat membuat pemisahan yang jelas antara REST atau RPC hanya dengan melihat apa yang Anda posting.
Salah satu kendala REST adalah harus tanpa kewarganegaraan. Jika Anda memiliki sesi maka Anda memiliki status sehingga Anda tidak dapat memanggil layanan Anda RESTful.
Fakta bahwa Anda memiliki tindakan di URL Anda (yaitu
getAllData
) merupakan indikasi terhadap RPC. Di REST Anda bertukar representasi dan operasi yang Anda lakukan ditentukan oleh kata kerja HTTP. Selain itu, di REST, Negosiasi konten tidak dilakukan dengan?p={JSON}
parameter.Tidak tahu apakah layanan Anda RPC, tetapi tidak RESTful. Anda dapat mempelajari perbedaannya secara online, berikut adalah artikel untuk Anda mulai: Membongkar Mitos RPC & REST . Anda lebih tahu apa yang ada di dalam layanan Anda jadi bandingkan fungsinya dengan apa itu RPC dan buat kesimpulan Anda sendiri.
sumber
Pertimbangkan contoh API HTTP berikut yang mencontohkan pesanan yang ditempatkan di restoran.
Menempatkan Pesanan:
Mengambil Pesanan:
Memperbarui Pesanan:
Contoh diambil dari sites.google.com/site/wagingguerillasoftware/rest-series/what-is-restful-rest-vs-rpc
sumber
Seperti yang dikatakan orang lain, perbedaan utama adalah bahwa REST berpusat pada kata benda dan RPC berpusat pada kata kerja. Saya hanya ingin menyertakan tabel contoh yang jelas ini yang menunjukkan bahwa:
Catatan
(misalnya
GET /persons/1234
), sedangkan RPC cenderung menggunakan parameter kueri untuk input fungsi(misalnya
GET /readPerson?personid=1234
).GET /persons?height=tall
).POST /signup
atauPOST /persons
, Anda menyertakan data yang menjelaskan orang baru).sumber
Ini adalah RPC menggunakan http . Implementasi REST yang benar harus berbeda dari RPC. Untuk memiliki logika untuk memproses data, seperti metode / fungsi, adalah RPC. getAllData () adalah metode cerdas. REST tidak dapat memiliki kecerdasan, itu harus berupa data dump yang dapat dipertanyakan oleh kecerdasan eksternal .
Sebagian besar implementasi yang saya lihat akhir-akhir ini adalah RPC tetapi banyak yang secara keliru menyebutnya sebagai REST. REST dengan HTTP adalah penyelamat dan SOAP dengan XML penjahatnya. Jadi kebingungan Anda dibenarkan dan Anda benar, itu bukan REST.
Protokol http tidak membuat implementasi REST. Baik REST (GET, POST, PUT, PATCH, DELETE) dan RPC (GET + POST) dapat dikembangkan melalui HTTP (misalnya: melalui proyek API web di studio visual).
Baik, tapi apa itu REST? Model kematangan Richardson diberikan di bawah ini (diringkas). Hanya level 3 yang RESTful.
misal: level 3 (HATEOAS):
Tautan menyatakan objek ini dapat diperbarui dengan cara ini, dan ditambahkan dengan cara ini.
Tautan menyatakan objek ini hanya dapat dibaca dan begitulah cara kami melakukannya.
Jelasnya, mengirim data saja tidak cukup untuk menjadi REST, tapi bagaimana cara query data, harus disebutkan juga. Tapi sekali lagi, mengapa 4 langkah? Mengapa tidak hanya Langkah 4 dan menyebutnya REST? Richardson baru saja memberi kami pendekatan langkah demi langkah untuk sampai ke sana, itu saja.
PS: REST sangat populer begitu juga pengujian otomatis tetapi ketika datang ke contoh dunia nyata .. yah ..
sumber
REST paling baik dijelaskan untuk bekerja dengan sumber daya, sedangkan RPC lebih banyak tentang tindakan.
REST adalah singkatan dari Representational State Transfer. Ini adalah cara sederhana untuk mengatur interaksi antara sistem independen. Aplikasi RESTful biasanya menggunakan permintaan HTTP untuk mengirim data (membuat dan / atau memperbarui), membaca data (misalnya membuat kueri), dan menghapus data. Jadi, REST dapat menggunakan HTTP untuk keempat operasi CRUD (Buat / Baca / Perbarui / Hapus).
RPC pada dasarnya digunakan untuk berkomunikasi di berbagai modul untuk melayani permintaan pengguna. misalnya Dalam openstack seperti bagaimana nova, glance dan neutron bekerja sama saat mem-boot mesin virtual.
sumber
Saya akan membantah demikian:
Apakah entitas saya memegang / memiliki data? Kemudian RPC: ini adalah salinan dari beberapa data saya, manipulasi salinan data yang saya kirimkan kepada Anda dan kembalikan kepada saya salinan hasil Anda.
Apakah entitas yang disebut memegang / memiliki data? Kemudian REST: baik (1) tunjukkan salinan beberapa data Anda atau (2) manipulasi beberapa data Anda.
Pada akhirnya, ini adalah tentang "sisi" mana dari tindakan yang memiliki / menyimpan data. Dan ya, Anda dapat menggunakan verbiage REST untuk berbicara dengan sistem berbasis RPC, tetapi Anda masih akan melakukan aktivitas RPC saat melakukannya.
Contoh 1: Saya memiliki objek yang berkomunikasi ke penyimpanan database relasional (atau jenis penyimpanan data lainnya) melalui DAO. Masuk akal untuk menggunakan gaya REST untuk interaksi antara objek saya dan objek akses data yang dapat ada sebagai API. Entitas saya tidak memiliki / menyimpan data, database relasional (atau penyimpanan data non-relasional) memilikinya.
Contoh 2: Saya perlu melakukan banyak matematika yang rumit. Saya tidak ingin memuat banyak metode matematika ke dalam objek saya, saya hanya ingin meneruskan beberapa nilai ke hal lain yang dapat melakukan semua jenis matematika, dan mendapatkan hasil. Kemudian gaya RPC masuk akal, karena objek / entitas matematika akan mengekspos ke objek saya sejumlah operasi. Perhatikan bahwa semua metode ini mungkin diekspos sebagai API individual dan saya mungkin memanggil salah satunya dengan GET. Saya bahkan dapat mengklaim ini RESTful karena saya menelepon melalui HTTP GET tetapi sebenarnya di balik penutup itu adalah RPC. Entitas saya memiliki / menyimpan data, entitas jarak jauh hanya melakukan manipulasi pada salinan data yang saya kirimkan.
sumber
Melalui HTTP mereka berdua akhirnya hanya menjadi
HttpRequest
objek dan mereka berdua mengharapkan sebuahHttpResponse
objek kembali. Saya pikir seseorang dapat melanjutkan pengkodean dengan deskripsi itu dan mengkhawatirkan hal lain.sumber
Ada banyak jawaban bagus di sini. Saya masih akan merujuk Anda ke blog google ini karena ini sangat bagus dalam membahas perbedaan antara RPC & REST dan menangkap sesuatu yang tidak saya baca di salah satu jawaban di sini.
Saya akan mengutip satu paragraf dari tautan yang sama yang menarik bagi saya:
sumber
Inilah cara saya memahami dan menggunakannya dalam berbagai kasus penggunaan:
Contoh: Manajemen Restoran
use-case untuk REST : manajemen pesanan
Untuk manajemen sumber daya, REST bersih. Satu titik akhir dengan tindakan yang telah ditentukan sebelumnya. Ini dapat dilihat cara untuk mengekspos DB (Sql atau NoSql) atau instance kelas ke dunia.
Contoh Implementasi:
Contoh Kerangka: Falcon untuk python.
use-case untuk RPC : manajemen operasi
Untuk pekerjaan analitis, operasional, non-responsif, non-representatif, berbasis tindakan, RPC bekerja lebih baik dan sangat wajar untuk berpikir fungsional.
Contoh Implementasi:
Contoh Kerangka Kerja: Flask untuk python
sumber