Kiedy używać REST do obsługi żądań vs AJAX do obsługi żądań [zamknięte]

12

Na mojej stronie internetowej, jeśli chcę wyświetlać dynamiczne listy rozwijane (np. Nazwy miast na podstawie wybranego kraju), mogę to zrobić za pomocą AJAX. Ale mogę to również zrobić za pomocą wywołania REST. Więc którego powinienem użyć?

Mój problem polega na tym, że tak naprawdę nie dostaję różnicy między REST a jakimikolwiek innymi żądaniami przeglądarki HTTP. Przejrzałem formalne definicje REST i wydaje się to identyczne z żądaniem HTTP. Czym więc REST z natury różni się od AJAX?

Kaushik
źródło
6
Jak się domyślacie, wcale się nie wykluczają.
Seth Battin,
2
byś zazwyczaj użyć API REST, gdy aplikacja jest dostępna przez inną aplikację
Gian Acuna
Nie widzę porównania między nimi. AJAX jest aplikacją kilku technik do wdrażania dynamicznych treści internetowych, natomiast REST to styl architektoniczny.
jramoyo
2
@downvoter --- dlaczego nienawiść?
Kaushik,

Odpowiedzi:

26

Mogę to zrobić za pomocą AJAX. Ale mogę to również zrobić za pomocą wywołania REST.

Yyy ... nie. Te dwie są całkowicie ortogonalne. Jeśli chcesz zaktualizować swoją stronę z danymi trzeba uzyskać z serwera, to będzie to zrobić za pomocą AJAX. Nie ma innego wyjścia. I to wywołanie AJAX może używać REST lub czegoś innego.

Mój problem polega na tym, że naprawdę nie dostaję różnicy między REST a żądaniem przeglądarki HTTP. (Inaczej formularz prześlij formularz). Przejrzałem formalne definicje REST i wydaje się, że jest to żądanie HTTP.

REST wezwanie jest żądanie HTTP, zawsze. Chociaż można go używać do obsługi zwykłych wywołań przeglądarki (takich jak przesyłanie formularzy) i zwracania pełnych stron HTML, zwykle jest używany do obsługi wywołań API, które zwracają tylko dane (zwykle w formacie JSON).

Dlaczego więc ma osobną nazwę?

Ponieważ REST jest specyficznym stylem korzystania z HTTP, prawdopodobnie używającym go tak, jak pierwotnie miał być używany, ale którego większość ludzi nie „dostała” i dlatego była rzadko używana przez prawie 2 dekady.

W szczególności REST oznacza kodowanie encji, którą chcesz pobrać lub manipulować w samym adresie URL (zwykle za pomocą identyfikatora) i kodowanie akcji, którą chcesz na nim wykonać w zastosowanej metodzie HTTP (GET dla pobierania, POST dla zmiany, PUT dla tworzenia , USUŃ, aby usunąć).

Michael Borgwardt
źródło
6
REST nie zawsze musi odbywać się przez HTTP. Każdy protokół może być REST, jeśli pasuje do zestawu metod. Ale w kontekście aplikacji internetowej będzie to oczywiście HTTP.
Jan Hudec
10
@Jan Hudec: Czy istnieją jakieś przykłady użycia REST w świecie rzeczywistym z innymi protokołami?
Michael Borgwardt,
6

Myślę, że najpierw musisz zrozumieć, że AJAX i REST nie są tak naprawdę alternatywami dla twojego przypadku użycia. AJAX oznacza asynchroniczny javascript i XML, więc jeśli używasz javascript do ładowania danych po zakończeniu żądania przeglądarki, robisz AJAX.

Z drugiej strony REST oznacza Reprezentatywny transfer stanu, który, jak wskazał Stefan Billet, wykorzystuje żądania HTTP do przesyłania danych. Tak więc REST jest w rzeczywistości jednym ze sposobów wykonywania AJAX. SOAP będzie kolejnym, ale to nie jest temat na twoje pytanie. Twoje pytanie powinno raczej brzmieć: „Która technologia jest najlepsza dla mojego przypadku użycia?”

W takim przypadku polecam zastanowienie się nad ilością danych wykorzystywanych w twoich listach rozwijanych. Jeśli masz tylko kilka elementów, możesz mieć je wszystkie na swojej stronie i po prostu użyć javascript, aby wyświetlić odpowiednie. Drugą opcją może być użycie wywołania REST z JSON jako reprezentacją, ponieważ jest łatwy w użyciu z javascript i bardzo lekki, co oczywiście oznaczałoby również wykonanie AJAX.

Lesstat
źródło
Kiedy używam Ajaxa do załadowania części strony, to żądanie AJAX jest wywołaniem http do serwera ... a dokładniej .. wywołuje określoną metodę w moim serwlecie. czy można bezpiecznie powiedzieć, że w tym przypadku AJAX używa REST?
Kaushik,
To zależy od metody, którą wywołujesz. Jeśli metoda np. Spełnia ograniczenia usługi RESTful WebService ( en.wikipedia.org/wiki/Representational_state_transfer ), możesz powiedzieć tak.
Lesstat
4

Usługa REST używa czasowników HTTP GET, POST, PUT, DELETE odpowiednio do pobierania, wstawiania, aktualizowania i usuwania zasobów na serwerze. Np. GET z adresem URL: kontroler / klient / {id}
Alternatywą jest dodanie metod do kontrolera, takich jak GetCustomerById (id), InsertCustomer (klient), UpdateCustomer (klient), DeleteCustomer (klient). Jest to tak zwane podejście RPC. Np. GET z url: controller / GetCustomerById? Id = {id}
Jedną z różnic jest to, że interfejs API REST jest w pewnym stopniu przewidywalny. Jeśli znasz REST i znasz nazwę odpowiedniego zasobu (np. Klient), możesz od razu wskoczyć i użyć kontrolera REST ze standardowymi czasownikami.
Dzięki podejściu RPC musisz wiedzieć, jakie metody są na twoim kontrolerze, jakie argumenty biorą, itp. Podpisy te mogą się różnić w zależności od kontrolera, od aplikacji do aplikacji.
Z drugiej strony AJAX jest tylko asynchronicznym sposobem umieszczania wyżej wymienionych żądań, zarówno jako wywołanie REST, jak i wywołanie RPC.

Stefan Billiet
źródło
Alternatywą jest nadal REST. Reszta jest zdefiniowana przez zestaw operacji, a NIE przez używany protokół.
Jan Hudec