Nachdem ich viel über die Unterschiede zwischen REST und SOAP gelesen hatte, hatte ich den Eindruck, dass REST nur ein anderes Wort für HTTP ist. Kann jemand erklären, welche Funktionen REST zu HTTP hinzufügt?
Hinweis : Ich suche keinen Vergleich zwischen REST und SOAP.
Update : Danke für deine Antworten. Jetzt ist mir klar geworden, dass REST nur eine Reihe von Regeln für die Verwendung von HTTP ist. Daher habe ich ein Follow-up zu den Vorteilen dieser Konventionen veröffentlicht .
Hinweis : Ich verstehe jetzt die Bedeutung von REST. Wie Emil Ivanov bemerkt, bedeutet REST, HTTP so zu verwenden, wie es sein soll. Ich bin mir jedoch nicht sicher, ob dies einen eigenen Begriff verdient, und ich verstehe den Hype nicht.
Antworten:
Nein, REST ist der Weg HTTP sollte werden verwendet .
Heute verwenden wir nur einen winzigen Teil der Methoden des HTTP-Protokolls - nämlich
GET
undPOST
. Der REST-Weg, dies zu tun, besteht darin, alle Methoden des Protokolls zu verwenden.Beispielsweise schreibt REST die Verwendung
DELETE
zum Löschen eines Dokuments (sei es eine Datei, ein Status usw.) hinter einem URI vor, während Sie bei HTTP einGET
oder einePOST
Abfrage wie diese missbrauchen würden...product/?delete_id=22
.quelle
HTTP ist ein Protokoll für die Kommunikation, das normalerweise für die Kommunikation mit Internetressourcen oder einer Anwendung mit einem Webbrowser-Client verwendet wird.
REST bedeutet, dass das Hauptkonzept, das Sie beim Entwerfen der Anwendung verwenden, die Ressource ist: Für jede Aktion, die Sie ausführen möchten, müssen Sie eine Ressource definieren, für die Sie normalerweise nur eine CRUD-Operation ausführen. Dies ist eine einfache Aufgabe. Aus diesem Grund ist es sehr praktisch, 4 im HTTP-Protokoll verwendete Verben gegen die 4 CRUD-Operationen zu verwenden (Get for Read, POST steht für CREATE, PUT steht für UPDATE und DELETE steht für DELETE). Dies unterscheidet sich vom älteren Konzept von RPC (Remote Procedure Call), bei dem Sie eine Reihe von Aktionen ausführen, die Sie als Ergebnis des Aufrufs des Benutzers ausführen möchten. Wenn Sie beispielsweise darüber nachdenken, wie Sie ein Facebook wie in einem Beitrag beschreiben können, können Sie mit RPC Dienste namens AddLikeToPost und RemoveLikeFromPost erstellen und diese zusammen mit all Ihren anderen Diensten in Bezug auf FB-Beiträge verwalten, sodass Sie keine speziellen Dienste erstellen müssen Objekt für Like. Mit REST haben Sie ein Like-Objekt, das separat mit den Funktionen Löschen und Erstellen verwaltet wird. Dies bedeutet auch, dass eine separate Entität in Ihrer Datenbank beschrieben wird. Das mag wie ein kleiner Unterschied aussehen, aber so zu arbeiten würde normalerweise einen viel einfacheren Code und eine viel einfachere Anwendung ergeben. Bei diesem Design ist der größte Teil der Logik der App aus der Struktur (dem Modell) des Objekts ersichtlich, im Gegensatz zu RPC, mit dem Sie normalerweise explizit viel mehr Logik hinzufügen müssten.
Das Entwerfen einer RESTful-Anwendung ist normalerweise viel schwieriger, da Sie komplizierte Dinge auf einfache Weise beschreiben müssen. Es ist schwierig, alle Funktionen nur mit CRUD-Funktionen zu beschreiben, aber danach wäre Ihr Leben viel einfacher und Sie werden feststellen, dass Sie viel kürzere Methoden schreiben werden.
Eine weitere Einschränkung der vorhandenen REST-Architektur besteht darin, bei der Kommunikation mit dem Client keinen Sitzungskontext zu verwenden (zustandslos). Dies bedeutet, dass alle Informationen, die erforderlich sind, um zu verstehen, wer der Client ist und was er möchte, mit der Webnachricht übergeben werden. Jeder Aufruf einer Funktion ist selbsterklärend. Es gibt keine vorherige Konversation mit dem Client, auf die in der Nachricht verwiesen werden kann. Daher konnte ein Kunde Ihnen nicht sagen, dass Sie mir die nächste Seite geben sollen, da Sie keine Sitzung haben, in der Sie speichern können, was die vorherige Seite ist und welche Art von Seite Sie möchten. Der Kunde müsste sagen: "Mein Name ist yuval, get mir Seite 2 eines bestimmten Beitrags in einem bestimmten Forum ". Das bedeutet, dass ein bisschen mehr Daten in der Kommunikation übertragen werden müssten. Denken Sie jedoch an den Unterschied zwischen dem Auffinden eines Fehlers, der von der Funktion "Nächste Seite abrufen" gemeldet wurde, im Gegensatz zu ".
Natürlich steckt noch viel mehr dahinter, aber meiner Meinung nach sind das die Hauptkonzepte eines Teelöffels.
quelle
HTTP ist ein Anwendungsprotokoll. REST ist eine Reihe von Regeln, mit deren Hilfe Sie eine verteilte Anwendung erstellen können, die bestimmte wünschenswerte Einschränkungen aufweist.
Wenn Sie nach den wichtigsten Einschränkungen von REST suchen, die eine RESTful-Anwendung von jeder HTTP-Anwendung unterscheiden, würde ich sagen, dass die Einschränkung "Selbstbeschreibung" und die Hypermedia-Einschränkung (auch bekannt als Hypermedia als Engine of Application State (HATEOAS)) das wichtigste.
Die Selbstbeschreibungsbeschränkung erfordert, dass eine RESTful-Anforderung in der Absicht des Benutzers vollständig selbstbeschreibend ist. Dadurch können Vermittler (Proxys und Caches) sicher auf die Nachricht reagieren.
Bei der HATEOAS-Einschränkung geht es darum, Ihre Anwendung in ein Linknetz zu verwandeln, bei dem der aktuelle Status des Clients auf seinem Platz in diesem Web basiert. Es ist ein kniffliges Konzept und erfordert mehr Zeit zum Erklären als ich es gerade habe.
quelle
Soweit ich weiß, erzwingt REST die Verwendung der verfügbaren HTTP-Befehle so, wie sie verwendet werden sollten.
Zum Beispiel könnte ich tun:
Im Ruhezustand würde ich jedoch die Anforderungsmethode "DELETE" verwenden, sodass der Abfrageparameter "method" nicht mehr erforderlich ist
quelle
Nicht ganz...
http://en.wikipedia.org/wiki/Representational_State_Transfer
http://www.looselycoupled.com/glossary/SOAP
quelle
REST ist eine spezielle Herangehensweise an das Design großer Systeme (wie das Web).
Es ist eine Reihe von "Regeln" (oder "Einschränkungen").
HTTP ist ein Protokoll, das versucht, diese Regeln einzuhalten.
quelle
REST = Representational State Transfer
REST ist eine Reihe von Regeln, mit deren Hilfe Sie eine verteilte Anwendung erstellen können, die bestimmte wünschenswerte Einschränkungen aufweist.
REST ist ein Protokoll zum Austausch von Nachrichten (XML, JSON usw.), die HTTP zum Transport dieser Nachrichten verwenden können.
Eigenschaften:
Es ist zustandslos, was bedeutet, dass im Idealfall keine Verbindung zwischen Client und Server aufrechterhalten werden sollte. Es liegt in der Verantwortung des Clients, seinen Kontext an den Server zu übergeben, und dann kann der Server diesen Kontext speichern, um die weitere Anforderung des Clients zu verarbeiten. Beispielsweise wird die vom Server verwaltete Sitzung durch die vom Client übergebene Sitzungskennung identifiziert.
Vorteile der Staatenlosigkeit:
Nachteile der Staatenlosigkeit:
Von REST unterstützte HTTP-Methoden:
GET: / string / someotherstring Es ist idempotent und sollte idealerweise bei jedem Anruf die gleichen Ergebnisse zurückgeben
PUT: Wie GET. Idempotent und wird zum Aktualisieren von Ressourcen verwendet.
POST: sollte eine URL und einen Text enthalten, die zum Erstellen von Ressourcen verwendet werden. Mehrere Anrufe sollten idealerweise unterschiedliche Ergebnisse liefern und mehrere Produkte erstellen.
LÖSCHEN: Zum Löschen von Ressourcen auf dem Server.
KOPF:
Die HEAD-Methode ist identisch mit GET, außer dass der Server in der Antwort KEINEN Nachrichtentext zurückgeben darf. Die in den HTTP-Headern als Antwort auf eine HEAD-Anforderung enthaltenen Metainformationen MÜSSEN mit den Informationen identisch sein, die als Antwort auf eine GET-Anforderung gesendet wurden.
OPTIONEN:
Mit dieser Methode kann der Client die mit einer Ressource verbundenen Optionen und / oder Anforderungen oder die Funktionen eines Servers ermitteln, ohne eine Ressourcenaktion zu implizieren oder einen Ressourcenabruf einzuleiten.
HTTP-Antworten
Hier finden Sie alle Antworten .
Hier einige wichtige: 200 - OK 3XX - Zusätzliche Informationen, die vom Client und der URL-Umleitung benötigt werden 400 - Ungültige Anforderung
401 - Nicht autorisiert für den Zugriff
403 - Verboten
Die Anforderung war gültig, aber der Server lehnt die Aktion ab. Der Benutzer verfügt möglicherweise nicht über die erforderlichen Berechtigungen für eine Ressource oder benötigt ein Konto.
404 - Nicht gefunden
Die angeforderte Ressource wurde nicht gefunden, ist aber möglicherweise in Zukunft verfügbar. Nachträgliche Anfragen des Kunden sind zulässig.
405 - Methode nicht zulässig Eine Anforderungsmethode wird für die angeforderte Ressource nicht unterstützt. Beispiel: Eine GET-Anforderung in einem Formular, für das Daten über POST angezeigt werden müssen, oder eine PUT-Anforderung in einer schreibgeschützten Ressource.
404 - Anforderung nicht gefunden
500 - Interner Serverfehler
502 - Fehlerhafter Gateway-Fehler
quelle
HTTP ist ein Kommunikationsprotokoll, das Nachrichten über ein Netzwerk transportiert. SOAP ist ein Protokoll zum Austausch von XML-basierten Nachrichten, die HTTP zum Transport dieser Nachrichten verwenden können. Rest ist ein Protokoll zum Austausch von (XML- oder JSON-) Nachrichten, die HTTP zum Transport dieser Nachrichten verwenden können.
quelle
HTTP is a contract, a communication protocol and REST is a concept, an architectural style
Dies kann HTTP, FTP oder andere Kommunikationsprotokolle verwenden, wird jedoch häufig bei HTTP verwendet.REST implies a series of constraints about how Server and Client should interact
.HTTP is a communication protocol with a given mechanism for server-client data transfer
Es wird am häufigsten in der REST-API verwendet, nur weilREST was inspired by WWW (world wide web) which largely used HTTP
vor der Definition von REST die Implementierung des REST-API-Stils mit HTTP einfacher ist.1.
Die Interaktion zwischen Server und Client sollte nur über Hypertext beschrieben werden.2.
Server und Client sollten lose miteinander verbunden sein und keine Annahmen über einander treffen. Der Client sollte nur den Ressourceneintrittspunkt kennen. Interaktionsdaten sollten vom Server in der Antwort bereitgestellt werden.3.
Der Server sollte keine Informationen zum Anforderungskontext speichern. Anforderungen müssen unabhängig und idempotent sein (dh wenn dieselbe Anforderung unendlich wiederholt wird, wird genau dasselbe Ergebnis abgerufen).Und HTTP ist nur ein Kommunikationsprotokoll (ein Tool), das dazu beitragen kann.
Weitere Informationen finden Sie unter folgenden Links:
https://martinfowler.com/articles/richardsonMaturityModel.html http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
quelle
REST ist nicht unbedingt an HTTP gebunden . RESTful-Webdienste sind nur Webdienste, die einer RESTful-Architektur folgen.
quelle
1-Client-server
,2-stateless
,3-casheable
. Welche zusätzlichen Funktionen / Einschränkungen hat REST dann für HTTP festgelegt? Was können wir mit REST tun, was mit HTTP allein nicht möglich ist?Von Sie kennen den Unterschied zwischen HTTP und REST nicht
quelle
REST-APIs müssen hypertextgesteuert sein
Im Blog von Roy Fielding finden Sie eine Reihe von Möglichkeiten, um zu überprüfen, ob Sie eine HTTP-API oder eine REST-API erstellen:
quelle