Apa perbedaan antara REST & RESTful

540

Apa perbedaan antara sistem REST dan sistem yang RESTful?

Dari beberapa hal yang pernah saya baca, yang disebut layanan REST sebenarnya adalah layanan RESTful. Jadi apa bedanya keduanya.

AwkwardCoder
sumber
3
Alasan untuk pertanyaan ini adalah karena jika Anda membaca artikel di tautan dan mencari tahu apa pendapat Dr Fielding tentang sebagian besar implementasi REST, mereka sama sekali bukan sistem REST. Mereka menunjukkan perilaku RESTful tetapi tidak dapat digolongkan sebagai sistem REST.
AwkwardCoder
4
Saya membaca artikel itu, tetapi saya pikir itu tidak membawanya ke perbedaan semantis yang tidak berguna.
JasonTrue
3
Artikel Wikipedia tentang REST - en.wikipedia.org/wiki/Representational_State_Transfer - paragraf kedua - "Sesuai dengan batasan REST sering disebut sebagai 'TENANG'."
Nate
1
@PramodNikumbh menjawab ini dengan benar di bawah ini. Sistem "REST" adalah sistem yang sesuai dengan definisi REST yang lebih luas. Ini menunjukkan setidaknya beberapa prinsip istirahat. "Restful" menggambarkan sistem yang lebih sesuai dengan REST.
Andrew Norman
Yah, saya pikir ada kebingungan dalam nama, "ful" di RESTful akan membingungkan kewarganegaraan dan negara dan itu adalah dua hal yang berbeda, REST dan RESTful menurut pendapat pribadi saya, harus NEGARA. bayangkan REST stateful bernama RESTles. :)
Waheed

Jawaban:

487

Representational state transfer (REST) adalah gaya arsitektur perangkat lunak. Sebagaimana dijelaskan dalam disertasi oleh Roy Fielding, REST adalah "gaya arsitektur" yang pada dasarnya memanfaatkan teknologi dan protokol Web yang ada.

RESTful biasanya digunakan untuk merujuk ke layanan web yang mengimplementasikan arsitektur semacam itu.

Justin Ethier
sumber
146
Jadi REST adalah arsitektur dan RESTful kata sifat?
manei_cc
4
@manei_cc: Walaupun dalam praktiknya apa yang akan Anda temukan adalah layanan bernama RESTful yang tidak mengikuti arsitektur REST dan pada dasarnya seperti REST, WEST-wannabies dll. Jadi selalu perhatikan bahwa "RESTful service" belum tentu dibangun menggunakan REST arsitektur, tetapi benar seperti yang ditulis Justin Ethier: mengeksploitasi teknologi dan protokol Web yang ada .
Azder
7
RESTful harus digunakan untuk API yang sangat menghormati REST. Saya melihat terlalu banyak layanan web "REST" yang hanya menggunakan GET atau POST. Tenang menekankan pada penggunaan lengkap kata kerja HTTP, dan konvensi penamaan URL. Tapi itu sudut pandang saya.
Martin
1
architectdari apa? dari url? seperti https://translation.googleapis.com/language/translate/v2ini gaya REST?
Asif Mushtaq
1
stackoverflow.com/users/3807248/pramod-nikumbh telah menjawab dengan benar di bawah ini
Andrew Norman
194

Layanan / Arsitektur berbasis REST vs Layanan / Arsitektur RESTFUL

Untuk membedakan atau membandingkan 2 ini, Anda harus tahu apa itu REST .

REST ( RE Presentational S tate T ransfer) pada dasarnya adalah gaya arsitektur pembangunan yang memiliki beberapa prinsip:

  • Itu harus stateless

  • Seharusnya mengakses semua sumber daya dari server hanya menggunakan URI

  • Tidak memiliki enkripsi bawaan

  • Tidak ada sesi

  • Ia menggunakan satu dan hanya satu protokol - HTTP

  • Untuk melakukan operasi CRUD, itu harus menggunakan HTTP kata kerja seperti get, post, putdandelete

  • Seharusnya mengembalikan hasil hanya dalam bentuk JSON atau XML, atom, OData dll. (Data ringan)

REST based services ikuti beberapa prinsip di atas dan tidak semua

RESTFUL services berarti mengikuti semua prinsip di atas.

Ini mirip dengan konsep:

Object-based languagesmendukung semua konsep OOP, contoh : C ++, C #

Object oriented languagesmendukung beberapa fitur OOP, contoh : JavaScript, VB


Contoh :

ASP Dot NET MVC 4 REST-Basedsementara Microsoft WEB API RESTFul.

MVC hanya mendukung beberapa prinsip REST di atas sedangkan API WEB mendukung semua Prinsip REST di atas.

MVC hanya mendukung yang berikut dari REST API

  • Kami dapat mengakses sumber daya menggunakan URI

  • Ini mendukung kata kerja HTTP untuk mengakses sumber daya dari server

  • Itu dapat mengembalikan hasil dalam bentuk JSON, XML, yaitu HTTPResponse.

Namun, pada saat bersamaan di MVC

  • Kita bisa menggunakan sesi ini

  • Kita bisa membuatnya menjadi negara

  • Kami dapat mengembalikan video atau gambar dari metode aksi pengontrol yang pada dasarnya melanggar prinsip REST

Itulah mengapa MVC adalah REST-Basedsedangkan API WEB mendukung semua prinsip di atas dan sekarang RESTFul.

Pramod Nikumbh
sumber
10
Saya tidak mengerti mengapa hal ini dibatalkan, jawaban ini membawa banyak informasi klarifikasi ke pertanyaan.
Marcovecchio
5
jawaban terbaik sejauh ini
Limon
2
Ini jawaban terbaik.
Mário Meyrelles
2
Anda dapat menggunakan FTP dengan REST. silakan lihat: stackoverflow.com/questions/35534812/…
crazyTech
7
Bahasa di bawah kategori "Berbasis objek" dan "Berorientasi Objek" di atas dibalik. Bahasa Berorientasi Objek mengikuti semua prinsip OOPS, sedangkan yang Berbasis Objek mengikuti beberapa.
Mrchief
119

"REST" adalah paradigma arsitektur. "RESTful" menggambarkan penggunaan paradigma itu.

SingleShot
sumber
architectdari apa? dari url? seperti https://translation.googleapis.com/language/translate/v2ini gaya REST?
Asif Mushtaq
2
Arsitektur REST membutuhkan banyak sifat. Anda tidak dapat mengatakan sesuatu mematuhi prinsip REST hanya dengan menunjukkan URL.
SingleShot
42

Seperti yang dikatakan Jason dalam komentar, RESTful hanya digunakan sebagai kata sifat yang menggambarkan sesuatu yang menghormati batasan REST.

Darrel Miller
sumber
29

REST adalah singkatan dari transfer negara representasional. Itu berarti bahwa negara itu sendiri tidak ditransfer tetapi hanya representasi dari itu. Contoh paling umum adalah aplikasi berbasis server HTML murni (tanpa javascript). Browser tidak tahu apa-apa tentang aplikasi itu sendiri tetapi melalui tautan dan sumber daya, server dapat mentransfer status aplikasi ke browser. Di mana tombol biasanya akan mengubah variabel status (mis. Halaman terbuka) di aplikasi windows biasa, di browser Anda memiliki tautan yang mewakili perubahan status tersebut.

Idenya adalah menggunakan hypermedia. Dan mungkin untuk membuat tipe hypermedia baru. Berpotensi kita dapat memperluas browser dengan javascript / AJAX dan membuat jenis hypermedia kustom baru. Dan kami akan memiliki aplikasi REST yang benar.

Ini adalah versi singkat saya tentang apa yang dimaksud dengan REST, masalahnya adalah sulit untuk diimplementasikan. Saya pribadi mengatakan RESTful, ketika saya ingin membuat referensi ke prinsip-prinsip REST tetapi saya tahu saya tidak benar-benar menerapkan seluruh konsep REST. Kami tidak benar-benar mengatakan SOAPful, karena Anda menggunakan SOAP atau tidak. Saya pikir kebanyakan orang tidak melakukan REST seperti yang dibayangkan oleh penciptanya Roy Fielding, kami benar-benar menerapkan arsitektur RESTful atau RESTlike. Anda dapat melihat disertasinya , dan Anda akan menemukan singkatan REST tetapi bukan kata RESTful.

Arturo Hernandez
sumber
23

REST adalah gaya arsitektur perangkat lunak untuk perangkat lunak terdistribusi

Sesuai dengan batasan REST disebut sebagai 'RESTful'.

Sangat digunakan hari ini untuk membangun layanan web sebagai alternatif untuk SOAP.

Di sini Anda memiliki beberapa tautan untuk diperiksa

http://en.wikipedia.org/wiki/Representational_State_Transfer
http://www.computerworld.com/s/article/297424/Representational_State_Transfer_REST_
http://www.ibm.com/developerworks/webservices/library/ws-restful/

Claudio Redi
sumber
13

terima kasih atas jawabannya. Baca artikel ini oleh Alex Rodriguez yang menunjukkan bahwa layanan web RESTful memiliki 4 karakteristik dasar yaitu:

  1. Gunakan metode HTTP secara eksplisit.
  2. Jadilah kewarganegaraan.
  3. Paparkan URI seperti struktur direktori.
  4. Transfer XML, Notasi Objek JavaScript (JSON), atau keduanya.
Kumait
sumber
Sebenarnya ada 6 kendala.
IronBlossom
2
@IronBlossom Care untuk memperbarui jawaban dengan dua yang hilang?
Paul Fleming
1
tautan mati, URL baru tampaknya adalah IBM
RESTful
10

Representational State Transfer (REST) ​​adalah gaya arsitektur perangkat lunak untuk sistem hypermedia yang didistribusikan seperti World Wide Web. Istilah Representational State Transfer diperkenalkan dan didefinisikan pada tahun 2000 oleh Roy Fielding 1 [2] dalam disertasi doktoralnya. Fielding adalah salah satu penulis utama dari spesifikasi Hypertext Transfer Protocol (HTTP) versi 1.0 dan 1.1. Sesuai dengan batasan REST disebut sebagai 'RESTful'. Sumber: Wikipedia

Andersson Melo
sumber
8

Layanan web pada dasarnya adalah situs web yang isinya dikonsumsi oleh program komputer, bukan orang. REST adalah seperangkat prinsip arsitektur yang menetapkan bahwa layanan web harus secara maksimal memanfaatkan HTTP dan standar web lainnya, sehingga program mendapatkan semua hal baik yang sudah dapat diperoleh orang dari web. REST sering dikontraskan dengan layanan web SOAP, dan layanan web berorientasi "panggilan prosedur jarak jauh" lainnya.

Presentasi Stefan Tilkov tentang REST di Parleys.com cukup bagus, terutama yang ini .

Untuk sebuah buku, Anda tidak bisa mendapatkan yang lebih baik dari Richardson dan Ruby's Restful Web Services .

Jim Ferrans
sumber
Jadi situs web biasa dapat dianggap sebagai aplikasi REST?
yoyo_fun
1
@yoyo_fun: Ya, situs web biasa juga bisa dibangun dengan tenang. Pada beberapa tingkat abstraksi apakah server mengembalikan HTML ke manusia atau JSON (katakanlah) ke suatu program tidak penting.
Jim Ferrans
5

Layanan berdasarkan REST disebut "layanan tenang".

Sumber yang saya andalkan adalah: Dr.Dobbs Archive

Nickolay
sumber
4

Ada 4 level API yang didefinisikan dalam Richardson Maturity Model. Ini didefinisikan sebagai:

  • level 0: sistem apa pun yang memiliki titik akhir tunggal untuk semua apisnya (SOAP atau RPC termasuk dalam kategori ini). Apis Level 0 juga bisa menyerupai "perintah".

  • level 1: sistem yang dijelaskan ResourceUri. Ini adalah sistem yang mendefinisikan banyak URI berbasis entitas (daripada memiliki titik akhir tunggal seperti sistem level 0). URI ini dapat menggunakan berbagai tindakan http (POST, GET, PUT, dll) untuk menerapkan tindakan berbeda terhadap sumber daya itu.

  • level 2: alias level 1 dengan penggunaan metode / verba HTTP standar dan respons kode multi status

  • level 3: alias level 2 plus HATEOAS (hypermedia termasuk dalam respons yang menjelaskan panggilan tambahan yang dapat Anda lakukan)

Sementara level 1, level 2, dan level 3 dapat dianggap sebagai sistem REST, hanya level yang lebih ketat (alias level 2 dan level 3) yang dianggap sebagai RESTful.

Jadi intinya semua RESTful apis adalah REST apis, tetapi tidak semua REST apis adalah RESTful

definisi Richardson Maturity Model

Andrew Norman
sumber
2

Anggap REST sebagai "kelas" arsitektur, sementara RESTful adalah "contoh" yang terkenal dari kelas itu.

Harap perhatikan ""; kita tidak berurusan dengan objek pemrograman "nyata" di sini.

Menepuk
sumber
1

"Layanan REST" dan "layanan ISTIRAHAT" adalah satu dan sama.

Sistem RESTful adalah sistem apa pun yang mengikuti konvensi REST sebagaimana didefinisikan dalam dokumen asli yang menciptakan gagasan aplikasi jaringan RESTful .

Perlu dicatat ada berbagai tingkat RESTfulness. Secara keseluruhan, REST adalah gaya, bukan standar, sehingga ada ruang untuk interpretasi berdasarkan kebutuhan. salah satu contohnya adalah URL sumber daya hierarkis (mis. /things/ID/relatedthings) vs URL datar (mis. /things/IDdan /relatedthings?thing=ID)

Brenden
sumber
1

REST (REpresentation State Transfer) adalah arsitektur yang menggunakan WebServices dibuat.

dan

RESTful adalah cara penulisan layanan menggunakan arsitektur REST. Layanan RESTful memaparkan sumber daya untuk mengidentifikasi target untuk berinteraksi dengan klien.

Manas
sumber
0

REST adalah pola arsitektur untuk membuat layanan web. Layanan RESTful adalah layanan yang mengimplementasikan pola tersebut.

sajadre
sumber