Wann REST zur Bearbeitung von Anforderungen verwendet werden soll, während AJAX zur Bearbeitung von Anforderungen verwendet werden soll [geschlossen]

12

Wenn ich auf meiner Webseite dynamische Dropdowns anzeigen möchte (z. B. Städtenamen basierend auf dem ausgewählten Land), kann ich dies mit AJAX tun. Ich kann es aber auch mit einem REST-Aufruf tun. Also was soll ich verwenden?

Mein Problem ist, dass ich wirklich keinen Unterschied zwischen REST und anderen HTTP-Browseranforderungen erhalte (auch bekannt als Formularübermittlung). Ich habe mir die formalen Definitionen von REST angesehen und es scheint identisch mit einer HTTP-Anfrage zu sein. Wie unterscheidet sich REST von AJAX?

Kaushik
quelle
6
Wie Sie vermutet haben, schließen sie sich überhaupt nicht aus.
Seth Battin
2
Normalerweise verwenden Sie eine REST-API, wenn eine andere Anwendung auf Ihre Anwendung
zugreift
Ich sehe den Vergleich zwischen den beiden nicht. AJAX ist eine Anwendung mehrerer Techniken zur Implementierung dynamischer Webinhalte, während REST ein Architekturstil ist.
Jramoyo
2
@downvoter --- warum der Hass?
Kaushik

Antworten:

26

Ich kann es mit AJAX machen. Ich kann es aber auch mit einem REST-Aufruf tun.

Ähm, nein. Diese beiden sind vollständig orthogonal. Wenn Sie Ihre Seite mit Daten aktualisieren wollen , müssen Sie von einem Server bekommen, Sie werden es tun AJAX. Es geht nicht anders. Und dieser AJAX-Aufruf kann REST oder etwas anderes verwenden.

Mein Problem ist, dass ich den Unterschied zwischen REST und einer HTTP-Browseranforderung (auch bekannt als Formularübermittlung) nicht wirklich verstehe. Ich habe mir formale Definitionen von REST angesehen und es scheint eine HTTP-Anfrage zu sein.

Ein REST- Aufruf ist immer eine HTTP-Anforderung. Obwohl es verwendet werden kann, um reguläre Browseraufrufe (wie das Senden von Formularen) zu verarbeiten und vollständige HTML-Seiten zurückzugeben, wird es normalerweise verwendet, um API-Aufrufe zu verarbeiten, die nur Daten zurückgeben (normalerweise im JSON-Format).

Warum hat es einen separaten Namen?

Da es sich bei REST um einen bestimmten Stil für die Verwendung von HTTP handelt, wird dieser wohl so verwendet, wie er ursprünglich verwendet werden sollte, was die meisten Menschen jedoch nicht "verstanden" haben und daher fast zwei Jahrzehnte lang nur selten verwendet wurden.

Insbesondere bedeutet REST, zu codieren, welche Entität Sie in der URL selbst abrufen oder bearbeiten möchten (normalerweise über eine ID) und welche Aktion Sie in der verwendeten HTTP-Methode ausführen möchten (GET zum Abrufen, POST zum Ändern, PUT zum Erstellen , LÖSCHEN zum Löschen).

Michael Borgwardt
quelle
6
REST muss nicht immer über HTTP erfolgen. Jedes Protokoll kann REST sein, wenn es zu den Methoden passt. Aber im Kontext von Webanwendungen wird es natürlich HTTP sein.
Jan Hudec
10
@ Jan Hudec: Gibt es Beispiele aus der Praxis, wie REST mit anderen Protokollen verwendet wird?
Michael Borgwardt
6

Nun, ich denke, Sie müssen zuerst verstehen, dass AJAX und REST nicht wirklich Alternativen für Ihren Anwendungsfall sind. AJAX steht für asynchrones Javascript und XML. Wenn Sie also Javascript zum Laden von Daten verwenden, nachdem die Browseranforderung abgeschlossen wurde, führen Sie AJAX aus.

REST steht dagegen für Representational State Transfer, das, wie Stefan Billet betonte, HTTP-Anfragen zur Datenübertragung verwendet. REST ist also eine Möglichkeit, AJAX zu verwenden. SOAP wäre eine andere, aber dies ist für Ihre Frage offtopisch. Ihre Frage sollte also eher lauten: "Welche Technologie eignet sich am besten für meinen Anwendungsfall?"

In diesem Fall würde ich empfehlen, über die Datenmenge nachzudenken, die in Ihren Dropdowns verwendet wird. Wenn Sie nur wenige Elemente haben, können Sie sie alle auf Ihrer Seite haben und einfach Javascript verwenden, um die entsprechenden Elemente anzuzeigen. Eine zweite Option könnte die Verwendung eines REST-Aufrufs mit JSON als Repräsentation sein, da die Verwendung mit Javascript einfach und sehr leicht ist, was natürlich auch AJAX bedeuten würde.

Lesstat
quelle
Wenn ich Ajax verwende, um einen Teil der Webseite zu laden, ist diese AJAX-Anfrage ein http-Aufruf an den Server ... genauer gesagt ... es ruft eine bestimmte Methode in meinem Servlet auf. Kann man mit Sicherheit sagen, dass AJAX in diesem Fall REST verwendet?
Kaushik
Nun, es hängt von der Methode ab, die Sie aufrufen. Wenn die Methode z. B. die Einschränkungen eines RESTful WebService ( en.wikipedia.org/wiki/Representational_state_transfer ) erfüllt, können Sie dies mit Ja sagen.
Lesstat
4

REST verwendet die HTTP-Verben GET, POST, PUT, DELETE, um Ressourcen auf einem Server abzurufen, einzufügen, zu aktualisieren und zu löschen. Beispiel: GET mit URL: controller / customer / {id}
Die Alternative besteht darin, einem Controller Methoden wie GetCustomerById (id), InsertCustomer (Kunde), UpdateCustomer (Kunde), DeleteCustomer (Kunde) hinzuzufügen. Dies ist ein sogenannter RPC-Ansatz. Beispiel: GET with url: controller / GetCustomerById? Id = {id}
Einer der Unterschiede besteht darin, dass eine REST-API vorhersehbar ist. Wenn Sie REST kennen und den Namen der gewünschten Ressource kennen (z. B. Kunde), können Sie sofort den REST-Controller mit den Standardverben verwenden.
Bei einem RPC-Ansatz müssen Sie wissen, welche Methoden auf Ihrem Controller vorhanden sind, welche Argumente sie verwenden usw. Diese Signaturen können von Controller zu Controller, von App zu App variieren.
AJAX hingegen ist nur eine asynchrone Methode zum Platzieren der oben genannten Anforderungen, sei es als REST-Aufruf oder als RPC-Aufruf.

Stefan Billiet
quelle
Die Alternative ist immer noch REST. Rest wird durch die Menge der Operationen definiert, NICHT durch das verwendete Protokoll.
Jan Hudec