Apa manfaat dari layanan web RESTful?

8

Tugas akademis ... Pertama kami diminta untuk membuat satu set .htmlfile statis yang menunjukkan hasil pemilihan di berbagai divisi administratif. Kemudian kami disuruh "memodernisasi" ini dengan menggunakan templat Django. Cukup adil, saya bisa melihat manfaat dari pendekatan semacam itu.

Tapi kemudian kami disuruh untuk lebih "mengotak-atik" ini dengan membuat aplikasi "Tenang". Sejauh yang saya tahu ini berarti bahwa server hanya dapat mengekspos API yang menanggapi permintaan dengan mengirim data mentah klien dalam format JSON; klien, yang merupakan situs HTML + CSS + JS statis, harus menerima JSON ini dan kemudian secara dinamis membuat halaman web di sisi browser dengan JavaScript.

Karena saya sedih melewatkan beberapa kuliah, ketika ini pasti dijelaskan, adakah yang bisa menjelaskan kepada saya apa manfaat dari pendekatan seperti itu? Karena saya harus mengatakan saya hanya dapat melihat kekurangannya:

  • Pengguna dengan JavaScript yang dinonaktifkan tidak akan dapat melihat halaman.
  • Koreksi saya jika saya salah, tetapi AFAIK konten situs tersebut tidak akan dapat diindeks oleh Google.
  • Tidak mungkin bagi pengguna untuk menandai hasil pemilihan di divisi tertentu. Sebagai gantinya, setiap kali mereka mengunjungi sisi, mereka harus mengklik jalan mereka untuk membuat JavaScript memuat hasil dari divisi tertentu. Atau gunakan bot Selenium yang melakukan ini untuk mereka.
  • Ini memecah / memajukan tombol browser.
gaazkam
sumber
Hanya satu poin lagi. Google sekarang membuat halaman seperti browser untuk mengindeks konten. Jadi konten dinamis dari layanan REST Anda dapat dirayapi jika masuk ke halaman (minimal oleh google AFAIK). . Memahami halaman web dengan lebih baik
Naresh Kumar

Jawaban:

13

Secara teknis, server web yang melayani halaman HTML adalah RESTful. Teks / Html adalah representasi sah yang valid , selama jenis media diatur dengan benar, sesuai dengan antarmuka yang seragam . Hanya saja, jangan menyalahgunakan kata kerja Anda (GET, POST, dll) dan ikuti HATEOAS (yaitu pada dasarnya menggunakan URL yang masuk akal yang secara unik mengidentifikasi sumber daya) dan ingat itu tenang.

Saya pikir apa yang ditanyakan oleh profesor Anda adalah bahwa halaman web Anda menggunakan RESTful API yang sering mengembalikan json (tapi sekali lagi dapat mengembalikan jenis media apa pun yang akan diterima klien ).

Adapun keberatan Anda:

Pengguna dengan JavaScript yang dinonaktifkan tidak akan dapat melihat halaman.

Yah, mereka tidak akan bisa mendapatkan konten dinamis apa pun. Halaman masih dapat berisi konten statis.

Koreksi saya jika saya salah, tetapi AFAIK konten situs tersebut tidak akan dapat diindeks oleh Google.

Konten statis, termasuk meta tag, masih dapat dirayapi tanpa masalah.

Tidak mungkin bagi pengguna untuk menandai hasil pemilihan di divisi tertentu. Sebagai gantinya, setiap kali mereka mengunjungi sisi, mereka harus mengklik jalan mereka untuk membuat JavaScript memuat hasil dari divisi tertentu. Atau gunakan bot Selenium yang melakukan ini untuk mereka. Ini memecah / memajukan tombol browser.

Tidak Jika Anda mengikuti HATEOAS dengan benar, URL harus memberikan semua informasi status yang diperlukan untuk merender halaman, dan jika itu ada di URL, itu dapat di-bookmark.

John Wu
sumber
Terima kasih, tetapi ada satu hal yang saya tidak mengerti. Jika URL berisi semua informasi, maka saya mengirim permintaan ke server untuk mendapatkan semua hasil pemilihan untuk divisi administrasi ini, dan jika saya mengikuti spesifikasi tugas, saya akan mendapatkan JSON ... Tidak, sesuai persyaratan, Saya akan merayapi JSON ini melalui XMLHttpResponse, yang tidak mempengaruhi apa yang ditampilkan di bilah alamat browser.! Jadi, untuk divisi administrasi mana pun yang saya lihat hasil pemilihan, URL yang dapat dibookmark sama dan mengarah ke halaman utama.
gaazkam
4
Benar. jika javascript Anda membuat perubahan dinamis ke halaman, biasanya URL tidak akan diperbarui agar sesuai. Tetapi Anda dapat membuatnya cocok jika bookmark itu penting. Lihat pushState dan replaceState dan mungkin location.hash untuk mengetahui cara melakukan ini.
John Wu
1
Dan sebenarnya, jika Anda menggunakan push state dengan benar, Google akan merayapi konten dinamis juga: newmediacampaigns.com/blog/…
Paul
2
+1 (terutama untuk menyebutkan bahwa tanggapan html bisa tenang), tetapi bukankah laba-laba Google telah menjalankan JavaScript untuk beberapa waktu sekarang?
RubberDuck
Decoupling frontend dan backend dengan sistem API komunikasi standar.
sgargel
0

Ini perbedaan yang halus, tetapi Anda pindah dari halaman web ke aplikasi web. Di halaman web, server dan klien digabungkan dengan erat; satu-satunya pilihan Anda untuk melihat informasi adalah melalui halaman web.

Dengan memindahkan data ke layanan web RESTful, tampilan (apa yang dulunya halaman web) dan model (data) sepenuhnya dipisahkan, dan opsi Anda untuk berinteraksi dengan data meningkat.

Perry
sumber
0

API REST, seperti API apa pun, membuat sumber daya tersedia di antarmuka yang dapat dibaca mesin yang dapat digunakan oleh klien.

Jika Anda menggunakan API itu untuk membangun situs web Anda, Anda adalah salah satu dari banyak aplikasi yang mungkin menggunakan layanan yang sama.

Keuntungan dari gaya REST adalah: - menggunakan protokol yang ada (di sini HTTP) untuk bertukar data - Anda menggunakan jenis media yang ditentukan untuk bertukar sumber daya.

Ini berarti pengembang lain dapat menggunakan pengetahuan dan alat yang ada untuk menggunakan API Anda.

Kwebble
sumber