it-swarm.com.de

REST vs RESTful vs "normaler" Webdienst - gleich oder nicht?

Ich habe einige Definitionen und Diskussionen zu REST und/oder RESTful-Anwendungen) gelesen, aber ich verstehe die wahre Bedeutung immer noch nicht.

Normalerweise arbeite ich mit Apps, die entweder Daten über GET abrufen oder Daten über POST an einen Webdienst (normalerweise ein PHP Skript)) senden, die dann entweder Daten abrufen aus der Datenbank oder schreiben Sie in die Datenbank.

Ist das eine RESTful App? Wenn nicht, was wäre eine RESTful-App? Was ist der Unterschied zwischen dem RESTful-Konzept und dem Konzept, mit dem ich bisher gearbeitet habe? Bitte erläutern Sie anhand eines Beispiels.

Außerdem spricht jemand über REST und jemand über RESTful-Apps. Ich habe festgestellt, dass sich der Begriff REST] auf das theoretische Konzept bezieht, während RESTful verwendet wird, wenn wir Sprechen Sie über die spezifische App. Ist das richtig oder gibt es echte Unterschiede zwischen REST und RESTful Apps)?

21
deviDave

Die Schlüsselattribute einer RESTful-Anwendung sind: Die gesamte Kommunikation erfolgt über http GET, POST, PUT, DELETE UND Alle Elemente werden über eine Standard-URL des Formulars adressiert http://your.site.com/salesapp/salesperson/0000001/details d. h. nur eine reine URL ohne Parameter usw. Die URL identifiziert das, was GET, POST, PUT, DELETE identifiziert, was Sie damit tun möchten.

Der Hauptgrund dafür ist, dass Sie automatisch einen zustandslosen Dienst haben, der lastausgeglichen, ausgefallen usw. usw. sein kann.

Die bloße Einfachheit des Schemas sorgt für eine sehr saubere Schnittstelle, die den Client vollständig von einer bestimmten Back-End-Implementierung entkoppelt.

13
James Anderson

REST steht für Representational State Transfer. Wenn Ihre Software den REST Constraints entspricht, wird sie als RESTful angesehen.

Was bedeutet das wirklich, nachdem ich schamlos aus Wikipedia herausgerissen habe? Es bedeutet effektiv, die eingebauten HTTP-Befehle wie GET, POST, PUT, DELETE und einige andere seltenere zu verwenden, um zwischen einem Client und einem Server hin und her zu kommunizieren.

Was Sie tun, klingt wie eine RESTFul-App. Es gibt jedoch einen großen Unterschied zwischen gut gestalteten und gestapelten RESTFul-Webdiensten. Beispielsweise kann der Code PHP am anderen Ende des GET eine Statusänderung ausführen, die als falsch angesehen wird, da ein GET als schreibgeschützte Operation angesehen wird. Es gibt subtile Unterschiede zwischen der Verwendung von POST (neu) und PUT (ersetzen).

Der Wikipedia-Artikel dazu ist eigentlich wirklich gut, also höre ich hier auf.

6
Martijn Verburg

Bevor Sie fortfahren, diese verwandte Frage kann Ihnen helfen

Der Unterschied zwischen REST und RESTful ist einfach die Semantik. REST ist ein Architekturstil, der auf eine Client-Server-Beziehung angewendet wird. RESTful ist einfach eine Möglichkeit, Ihren Kunden mitzuteilen, dass Sie REST verwenden.

Viele Webanwendungen behaupten, RESTful zu sein, aber tatsächlich nur teilweise konform zu REST Constraints (wie Martijn Verburg auch in seiner Antwort erwähnt hat). Ich werde sie hier nur auflisten, aber ich fordere Sie dringend auf, den Artikel zu lesen:

  • Kundenserver
  • Cacheable
  • Schichtsystem
  • Code on Demand (optional)

Da Sie erwähnen, dass Sie auf der Clientseite arbeiten, kann es hilfreich sein zu sehen, was eine REST Architektur von Ihnen als Verbindungsclient erwartet und erwartet. Obwohl REST kein HTTP ist, ist es bei weitem das beliebteste Protokoll, das unterstützt, was REST ist, also werde ich mein Beispiel darum rahmen.

Von Ihrem Kunden wird erwartet, dass er:

  • verwenden Sie HTTP-Verben (z. B. GET, POST, PUT, DELETE, OPTIONS, PATCH), um relevante Operationen auszuführen
  • angebot Akzeptieren Sie Header und verstehen Sie Content-Type-Header (z. B. erhalten Sie XML, das Sie noch nie gesehen haben, aber Sie können eine referenzierte XSD verwenden, um ein clientseitiges Domänenmodell zu erstellen, das Ihrem Benutzer präsentiert wird).
  • folgen Sie den angebotenen Links in einem Inhaltstyp, den Sie verstehen (z. B. lassen Sie Ihren Benutzer oder Ihre Anwendung schließen, dass <link rel="pay" href="http://example.org/orders(1)/payment"> in HTML einen Statusübergang zum Erstellen einer Zahlungsressource über ein POST mit a ausdrückt Textkörper mit XML, der die Zahlungsdetails wie Kreditkartennummer, Betrag usw. darstellt.
  • reagieren Sie korrekt auf die Vielzahl von HTTP-Statuscodes

Wenn dies der Fall ist, kann es als REST Client betrachtet werden. Sie können es als "RESTful App" bezeichnen, dies würde jedoch eher bedeuten, dass Sie RESTverwenden. _ auf der Client-Seite, was falsch ist, um den Begriff am besten zu vermeiden.

4
Gary Rowe

RESTful bedeutet, dass die Schnittstelle eine Reihe von Objekten ist, die gelesen und aktualisiert (und möglicherweise gelöscht) werden können. Das heißt, es gibt keine Abfragen mit mehreren Parametern (nur der Parameter ist das Objekt, das Sie lesen möchten) und es gibt nur eine Art von Operation, die etwas auf dem Server ändert: das Hochladen eines neuen Status.

Diese Einschränkungen stellen sicher, dass alle Anforderungen idempotent sind (mehrmaliges Senden hat keine zusätzlichen Auswirkungen auf das einmalige Senden). Dies ist wichtig, da das Netzwerk jederzeit ausfallen und keine Anforderung oder Antwort liefern kann. Bei idempotenten Anforderungen senden Sie es einfach erneut und müssen keine komplizierte Wiederherstellung durchführen.

3
Jan Hudec