Kapan menggunakan REST untuk menangani permintaan vs menggunakan AJAX untuk menangani permintaan [ditutup]

12

Di halaman web saya, jika saya ingin menampilkan dropdown dinamis (mis. Nama kota berdasarkan negara yang dipilih), saya bisa melakukannya menggunakan AJAX. Tapi saya juga bisa melakukannya menggunakan panggilan REST. Jadi mana yang harus saya gunakan?

Masalah saya adalah saya benar-benar tidak mendapatkan perbedaan antara REST dan permintaan browser HTTP lainnya. (Alias ​​formulir kirim). Saya telah melihat definisi formal REST dan tampaknya identik dengan permintaan HTTP. Jadi bagaimana REST secara inheren berbeda dari AJAX?

Kaushik
sumber
6
Seperti yang Anda duga, mereka tidak saling eksklusif sama sekali.
Seth Battin
2
Anda biasanya akan menggunakan REST API ketika aplikasi Anda diakses oleh aplikasi lain
Gian Acuna
Saya tidak melihat perbandingan antara keduanya. AJAX adalah aplikasi dari beberapa teknik untuk mengimplementasikan konten web yang dinamis, sedangkan REST adalah gaya arsitektur.
jramoyo
2
@ downvoter --- mengapa benci?
Kaushik

Jawaban:

26

Saya bisa melakukannya menggunakan AJAX. Tapi saya juga bisa melakukannya menggunakan panggilan REST.

Um, tidak. Keduanya benar-benar ortogonal. Jika Anda ingin memperbarui halaman Anda dengan data yang harus Anda dapatkan dari server, Anda akan melakukannya menggunakan AJAX. Tidak ada jalan lain. Dan panggilan AJAX itu bisa menggunakan REST, atau yang lainnya.

Masalah saya adalah saya benar-benar tidak mendapatkan perbedaan antara REST dan permintaan browser HTTP. (Alias ​​formulir kirim). Saya telah melihat definisi formal REST dan sepertinya permintaan HTTP.

Sebuah SISA panggilan adalah permintaan HTTP, selalu. Meskipun dapat digunakan untuk menangani panggilan browser biasa (seperti pengiriman formulir) dan mengembalikan halaman HTML lengkap, biasanya digunakan untuk menangani panggilan API yang hanya mengembalikan data (biasanya dalam format JSON).

Jadi mengapa ia memiliki nama yang terpisah?

Karena REST adalah gaya khusus menggunakan HTTP, bisa dibilang menggunakannya seperti yang semula dimaksudkan untuk digunakan, tetapi yang sebagian besar orang tidak "dapatkan" dan karenanya jarang digunakan selama hampir 2 dekade.

Secara khusus, REST berarti penyandian entitas yang ingin Anda ambil atau manipulasi dalam URL itu sendiri (biasanya melalui ID) dan penyandian tindakan apa yang ingin Anda lakukan di dalamnya dalam metode HTTP yang digunakan (DAPATKAN untuk mengambil, POST untuk mengubah, PUT untuk membuat, PUT untuk membuat , HAPUS untuk menghapus).

Michael Borgwardt
sumber
6
REST tidak harus selalu melebihi HTTP. Protokol apa pun mungkin ISTIRAHAT jika itu sesuai dengan set metode. Tetapi dalam konteks aplikasi web itu akan menjadi HTTP, tentu saja.
Jan Hudec
10
@ Jan Hudec: Apakah ada contoh dunia nyata REST yang digunakan dengan protokol lain?
Michael Borgwardt
6

Yah saya pikir Anda pertama-tama perlu memahami bahwa AJAX dan REST tidak benar-benar alternatif untuk kasus penggunaan Anda. AJAX adalah singkatan dari javascript dan XML asinkron jadi jika Anda menggunakan javascript untuk memuat data setelah permintaan browser selesai, Anda melakukan AJAX.

REST di sisi lain adalah singkatan dari Representational State Transfer yang sebagaimana ditunjukkan oleh Stefan Billet menggunakan permintaan HTTP untuk mentransfer data. Jadi REST sebenarnya adalah salah satu cara untuk melakukan AJAX. SABUN akan menjadi yang lain tetapi ini offtopic untuk pertanyaan Anda. Jadi pertanyaan Anda seharusnya adalah: "Teknologi mana yang terbaik untuk kasus penggunaan saya?"

Dalam hal ini saya akan merekomendasikan untuk memikirkan jumlah data yang digunakan dalam dropdown Anda. Jika Anda hanya memiliki beberapa elemen, Anda dapat memiliki semuanya di halaman Anda dan hanya menggunakan javascript untuk menunjukkan yang tepat. Pilihan kedua bisa menggunakan panggilan REST dengan JSON sebagai tanggapan karena mudah digunakan dengan javascript dan sangat ringan yang tentu saja juga berarti melakukan AJAX.

Lesstat
sumber
Ketika saya menggunakan Ajax untuk memuat sebagian dari halaman web, permintaan AJAX itu adalah panggilan http ke server ... lebih khusus .. itu memanggil metode tertentu pada servlet saya. apakah aman untuk mengatakan bahwa dalam hal ini AJAX menggunakan REST?
Kaushik
Yah itu tergantung pada metode yang Anda panggil. Jika metode mis memenuhi batasan dari RESTful WebService ( en.wikipedia.org/wiki/Representational_state_transfer ) Anda bisa mengatakan ya.
Lesstat
4

REST menggunakan kata kerja HTTP GET, POST, PUT, DELETE untuk masing-masing mendapatkan, menyisipkan, memperbarui, menghapus sumber daya di server. Misalnya, DAPATKAN dengan url: controller / customer / {id}
Alternatifnya adalah menambahkan metode ke controller seperti GetCustomerById (id), InsertCustomer (pelanggan), UpdateCustomer (pelanggan), DeleteCustomer (pelanggan). Inilah yang dikenal sebagai pendekatan RPC. Misalnya, DAPATKAN dengan url: controller / GetCustomerById? Id = {id}
Salah satu perbedaan adalah, adalah bahwa api REST agak dapat diprediksi. Jika Anda tahu REST dan Anda tahu nama sumber daya yang Anda inginkan (mis. Pelanggan), maka Anda dapat langsung masuk dan menggunakan pengontrol REST dengan kata kerja standar.
Dengan pendekatan RPC, Anda perlu tahu metode apa yang ada di controller Anda, argumen apa yang mereka ambil, dll. Tanda tangan ini dapat bervariasi dari controller ke controller, dari aplikasi ke aplikasi.
AJAX di sisi lain hanyalah cara tidak sinkron untuk menempatkan permintaan tersebut, baik sebagai panggilan REST atau panggilan RPC.

Stefan Billiet
sumber
Alternatifnya masih REST. Istirahat didefinisikan oleh set operasi, BUKAN protokol yang digunakan.
Jan Hudec