Saya sudah membaca beberapa definisi dan diskusi tentang REST dan / atau aplikasi RESTful, tapi saya masih tidak mengerti arti sebenarnya dari itu.
Saya biasanya bekerja dengan aplikasi yang mengambil data melalui GET atau mengirim data melalui POST ke beberapa layanan web (biasanya skrip PHP) yang kemudian mendapatkan data dari database atau menulis ke dalam database.
Sekarang, apakah ini aplikasi yang tenang? Jika tidak, apa yang akan menjadi aplikasi tenang? Apa perbedaan antara konsep RESTful dan konsep yang saya kerjakan sejauh ini? Tolong jelaskan melalui contoh.
Juga, seseorang berbicara tentang REST dan seseorang tentang aplikasi RESTful. Saya menemukan bahwa istilah REST mengacu pada konsep teoretis, sementara RESTful digunakan ketika kita berbicara tentang aplikasi tertentu. Apakah ini benar atau ada perbedaan nyata antara aplikasi REST dan RESTful?
Jawaban:
Atribut kunci dari aplikasi RESTful adalah: Semua komunikasi adalah melalui http GET, POST, PUT, DELETE DAN semua item ditangani melalui URL standar formulir
http://your.site.com/salesapp/salesperson/0000001/details
yaitu hanya URL murni tanpa parameter dll. URL mengidentifikasi hal yang DAPATKAN , POST, PUT, DELETE mengidentifikasi apa yang ingin Anda lakukan padanya.Alasan utama untuk melakukan ini adalah bahwa Anda secara otomatis memiliki layanan tanpa kewarganegaraan yang dapat memuat seimbang, gagal melebihi dll. Dll
Kesederhanaan semata skema membuat antarmuka yang sangat bersih, benar-benar memisahkan klien dari implementasi back-end tertentu.
sumber
REST adalah singkatan dari Representational State Transfer. Jika perangkat lunak Anda sesuai dengan REST Constraints maka itu dianggap RESTful.
Benar, sekarang setelah saya tanpa malu-malu merobek dari Wikipedia, apa artinya ini? Ini secara efektif berarti menggunakan perintah HTTP inbuilt seperti GET, POST, PUT, DELETE dan beberapa lainnya yang lebih jarang untuk berkomunikasi bolak-balik antara klien dan server.
Apa yang Anda lakukan terdengar seperti aplikasi RESTFul. Namun, ada perbedaan besar antara layanan web RESTFul yang dirancang dengan baik dan bertumpukan. Misalnya kode PHP di ujung GET yang lain dapat melakukan perubahan status, yang akan dianggap salah karena GET dipandang sebagai operasi hanya baca. Ada perbedaan halus antara bagaimana POST (baru) dan PUT (ganti) digunakan juga.
Artikel Wikipedia tentang ini sebenarnya sangat bagus, jadi saya akan berhenti di sini.
sumber
Sebelum melangkah lebih jauh, pertanyaan terkait ini dapat membantu Anda
Perbedaan antara REST dan RESTful hanyalah semantik. REST adalah gaya arsitektur yang diterapkan pada hubungan klien-server. RESTful hanyalah cara untuk memberi tahu klien Anda bahwa Anda menggunakan REST.
Banyak aplikasi web yang mengklaim sebagai RESTful, tetapi sebenarnya hanya sebagian yang sesuai dengan REST Constraints (sebagaimana Martijn Verburg juga merujuk dalam jawabannya). Saya hanya akan daftar di sini tapi saya sangat menyarankan Anda untuk membaca artikel:
Karena Anda menyebutkan bahwa Anda bekerja di sisi klien, mungkin bermanfaat untuk melihat apa yang akan diberikan dan diharapkan arsitektur REST dari Anda sebagai klien yang terhubung. Meskipun REST bukan HTTP, protokol ini yang paling populer yang mendukung apa itu REST, jadi saya akan membingkai contoh saya di sekitar itu.
Klien Anda diharapkan untuk:
<link rel="pay" href="http://example.org/orders(1)/payment">
dalam HTML menyatakan transisi keadaan untuk membuat sumber daya pembayaran melalui POST dengan badan yang berisi beberapa XML yang mewakili rincian pembayaran seperti nomor kartu kredit , jumlah dan sebagainya)Jika berhasil di atas maka dapat dianggap sebagai klien REST, Anda mungkin ingin menyebutnya "aplikasi RESTful" tetapi itu lebih baik menyiratkan bahwa Anda menggunakan REST di sisi klien yang salah sehingga sebaiknya hindari syarat.
sumber
RESTful berarti antarmuka adalah sekumpulan objek, yang dapat dibaca dan diperbarui (dan mungkin dihapus). Artinya tidak ada permintaan multi-parameter (hanya parameter adalah objek yang ingin Anda baca) dan hanya ada satu jenis operasi yang mengubah apa pun di server, mengunggah status baru.
Batasan ini memastikan bahwa semua permintaan idempoten (mengirimkannya beberapa kali tidak memiliki efek tambahan untuk mengirimnya sekali). Ini penting, karena jaringan dapat gagal kapan saja dan tidak mengirimkan permintaan atau tanggapan apa pun dan dengan permintaan idempoten Anda hanya mengirimnya lagi dan tidak perlu melakukan pemulihan yang rumit.
sumber