İstekleri işlemek için REST ne zaman kullanılır ve istekleri işlemek için AJAX kullanma [kapalı]


12

Web sayfamda, dinamik açılır menüleri görüntülemek istersem (örneğin, seçilen ülkeye göre şehir adları), AJAX kullanarak yapabilirim. Ama bunu bir REST çağrısı kullanarak da yapabilirim. Peki hangisini kullanmalıyım?

Benim sorunum gerçekten REST ve başka bir HTTP tarayıcı isteği (yani bir form gönderme) arasındaki farkı alamadım. REST'in resmi tanımlarına baktım ve bir HTTP isteğiyle aynı görünüyor. Peki REST'in doğal olarak AJAX'tan farkı nedir?


6
Tahmin ettiğiniz gibi, bunlar karşılıklı olarak birbirini dışlamaz.
Seth Battin

2
uygulamanıza başka bir uygulama tarafından erişildiğinde genellikle bir REST API kullanırsınız
Gian Acuna

İkisi arasındaki karşılaştırmayı görmüyorum. AJAX, dinamik web içeriği uygulamak için çeşitli tekniklerin bir uygulaması iken, REST mimari bir stildir.
jramoyo

2
@downvoter --- neden nefret?
Kaushik

Yanıtlar:


26

AJAX kullanarak yapabilirim. Ama bunu bir REST çağrısı kullanarak da yapabilirim.

Um, hayır. Bu ikisi tamamen dikgen. Sayfanızı bir sunucudan almanız gereken verilerle güncellemek istiyorsanız , AJAX'ı kullanarak yapacaksınız. Başka yolu yok. Ve bu AJAX çağrısı yapabilirsiniz DİNLENME, ya da başka bir şey kullanın.

Benim sorunum gerçekten REST ve bir HTTP tarayıcı isteği arasındaki farkı alamadım. (Aka form gönderme). REST'in resmi tanımlarına baktım ve bir HTTP isteği gibi görünüyor.

Bir DİNLENME çağrı olduğunu her zaman bir HTTP isteği. Normal tarayıcı çağrılarını (form gönderimleri gibi) işlemek ve tam HTML sayfaları döndürmek için kullanılabilse de, genellikle yalnızca veri döndüren API çağrılarını (genellikle JSON biçiminde) işlemek için kullanılır.

Peki neden ayrı bir adı var?

REST HTTP kullanmak için belirli bir stil olduğu için, muhtemelen başlangıçta kullanılması amaçlanan şekilde kullanılır, ancak çoğu insan "almaz" ve bu nedenle nadiren neredeyse yirmi yıldır kullanılır.

Özellikle, REST, URL'nin kendisinde almak veya değiştirmek istediğiniz varlığı kodlamak (genellikle bir kimlik aracılığıyla) ve kullanılan HTTP yönteminde (almak için GET, değiştirmek için POST, oluşturma için PUT) hangi eylemi gerçekleştirmek istediğinizi kodlamak anlamına gelir. , Silmek için DELETE).


6
REST'in her zaman HTTP üzerinden olması gerekmez. Herhangi bir protokol, yöntem kümesine uyuyorsa REST olabilir. Ancak web uygulaması bağlamında elbette HTTP olacaktır.
Jan Hudec

10
@Jan Hudec: REST'in diğer protokollerle birlikte kullanıldığı gerçek dünya örnekleri var mı?
Michael Borgwardt

6

Öncelikle AJAX ve REST'in kullanım durumunuz için gerçekten alternatif olmadığını anlamanız gerektiğini düşünüyorum. AJAX, eşzamansız javascript ve XML anlamına gelir, bu nedenle tarayıcı isteği bittikten sonra veri yüklemek için javascript kullanıyorsanız, AJAX yapıyorsunuzdur.

Öte yandan REST, Stefan Billet'in işaret ettiği gibi, veri aktarmak için HTTP isteklerini kullanan Temsili Durum Transferi anlamına gelir. Yani REST aslında AJAX ile yapmanın bir yoludur. SOAP başka bir tane olurdu, ancak bu sorunuz için offtopic. Dolayısıyla sorunuz şu şekilde olmalıdır: "Kullanım durumum için en iyi teknoloji hangisidir?"

Bu durumda, açılır listelerinizde kullanılan veri miktarını düşünmenizi tavsiye ederim. Yalnızca birkaç öğeniz varsa, bunların hepsi sayfanızda olabilir ve yalnızca uygun olanları göstermek için javascript kullanabilirsiniz. İkinci bir seçenek JSON ile REST çağrısını temsil olarak kullanmak olabilir, çünkü javascript ile kullanımı kolaydır ve elbette AJAX yapmak anlamına da gelecektir.


Web sayfasının bir bölümünü yüklemek için Ajax kullandığımda, bu AJAX isteği sunucuya bir http çağrısıdır ... daha spesifik ... benim sunucu uygulamamdaki belirli bir yöntemi çağırır. bu durumda AJAX'ın REST kullandığını söylemek güvenli midir?
Kaushik

Eh, aradığınız yönteme bağlıdır. Yöntem örneğin bir RESTful WebService ( en.wikipedia.org/wiki/Representational_state_transfer ) kısıtlamalarını karşılıyorsa, evet diyebilirsiniz.
Lesstat

4

REST, sunucudaki kaynakları sırasıyla almak, eklemek, güncellemek, silmek için GET, POST, PUT, DELETE HTTP fiillerini kullanır. Örneğin url ile GET: controller / customer / {id}
Alternatif, bir denetleyiciye GetCustomerById (id), InsertCustomer (müşteri), UpdateCustomer (müşteri), DeleteCustomer (müşteri) gibi yöntemler eklemektir. RPC yaklaşımı olarak bilinen şey budur. Örneğin url ile GET: controller / GetCustomerById? İd = {id}
Farklılıklardan biri, bir REST API'sinin bir tür tahmin edilebilir olmasıdır. REST'i biliyorsanız ve istediğiniz kaynağın adını biliyorsanız (örneğin, Müşteri), hemen atlayabilir ve REST denetleyicisini standart fiillerle kullanabilirsiniz.
RPC yaklaşımıyla, denetleyicinizde hangi yöntemlerin olduğunu, ne tür argüman aldıklarını vb. Bilmeniz gerekir. Bu imzalar denetleyiciden denetleyiciye, uygulamadan uygulamaya değişebilir.
Öte yandan AJAX, ister REST çağrısı isterse RPC çağrısı olsun, yukarıda belirtilen istekleri yerine getirmenin asenkron yoludur.


Alternatif hala REST. Dinlenme, kullanılan protokol DEĞİL, işlem kümesiyle tanımlanır.
Jan Hudec
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.