REST sollte verwendet werden, wenn es für Sie sehr wichtig ist , die Kopplung zwischen Client- und Serverkomponenten in einer verteilten Anwendung zu minimieren .
Dies kann der Fall sein, wenn Ihr Server von vielen verschiedenen Clients verwendet wird , über die Sie keine Kontrolle haben. Dies kann auch der Fall sein, wenn Sie den Server regelmäßig aktualisieren möchten, ohne die Client-Software aktualisieren zu müssen.
Ich kann Ihnen versichern, dass es nicht einfach ist, dieses niedrige Kopplungsniveau zu erreichen . Es ist wichtig, alle Einschränkungen von REST zu befolgen, um erfolgreich zu sein. Die Aufrechterhaltung einer rein zustandslosen Verbindung ist schwierig. Es ist schwierig, die richtigen Medientypen auszuwählen und Ihre Daten in die Formate zu komprimieren. Das Erstellen eigener Medientypen kann noch schwieriger sein.
Das Anpassen des Rich-Server-Verhaltens an die einheitliche HTTP-Schnittstelle kann verwirrend sein und erscheint im Vergleich zum relativ einfachen RPC-Ansatz manchmal umständlich.
Trotz der Schwierigkeiten besteht der Vorteil darin, dass Sie einen Dienst haben, den ein Cliententwickler aufgrund der konsequenten Verwendung des HTTP-Protokolls leicht verstehen sollte. Der Dienst sollte aufgrund von Hypermedia leicht erkennbar sein und der Client sollte äußerst widerstandsfähig gegenüber Änderungen auf dem Server sein .
Die Vorteile von Hypermedia und die Vermeidung des Sitzungsstatus machen den Lastausgleich einfach und die Dienstpartitionierung möglich . Die strikte Einhaltung der HTTP-Regeln macht die Verfügbarkeit von Tools wie Debuggern und Caching-Proxys zu einer wunderbaren Sache.
Aktualisieren
Es scheint mir, dass REST ein weiteres „letztes Wort der Mode“ ist (oder ich kann mich völlig irren, weil ich REST in der Praxis noch nie gesehen habe).
Ich denke, REST ist in Mode gekommen, weil Leute, die versuchen, SOA-Projekte durchzuführen, festgestellt haben, dass sie mit dem SOAP-Stack die versprochenen Vorteile nicht realisieren. Als Beispiel für einfache Integrationsmethoden wenden sich die Menschen immer wieder dem Web zu. Leider denke ich, dass die Leute den Planungsaufwand und die Voraussicht, die für die Erstellung des Webs aufgewendet wurden, unterschätzen und vereinfachen, was zu tun ist, um die Art der zufälligen Wiederverwendung im Web zu ermöglichen.
Sie sagen, dass Sie REST in der Praxis noch nie gesehen haben, aber das kann unmöglich wahr sein, wenn Sie jemals einen Webbrowser verwenden. Der Webbrowser ist ein REST-Client.
- Warum müssen Sie kein Browser-Update durchführen, wenn jemand HTML auf einer Website ändert?
- Warum kann ich einer Website einen vollständigen neuen Satz von Seiten hinzufügen und der "Client" kann weiterhin ohne Aktualisierung auf diese neuen Seiten zugreifen?
- Warum muss ich dem Webbrowser keine "Service-Beschreibungssprache" bereitstellen, um ihm mitzuteilen, wenn er zu http://example.org/images/cat geht, dass der Rückgabetyp ein JPEG-Bild ist und wenn Sie gehen zu
http://example.org/description/cat lautet
der Rückgabetyp text / html?
- Warum kann ich einen Webbrowser verwenden, um Websites zu besuchen, die zum Zeitpunkt der Veröffentlichung des Browsers noch nicht vorhanden waren? Wie kann der Kunde über diese Websites Bescheid wissen?
Dies mag nach verrückten Fragen klingen, aber wenn Sie die Antwort kennen, können Sie sehen, worum es bei REST geht. Weitere Vorteile von REST finden Sie in StackOverflow. Wenn ich eine Frage betrachte, kann ich diese Seite mit einem Lesezeichen versehen oder die URL an einen Freund senden, und er kann dieselben Informationen sehen. Er muss nicht durch die Site navigieren, um diese Frage zu finden.
StackOverflow verwendet eine Vielzahl von OpenId-Diensten zur Authentifizierung, gravatar.com für Avatar-Bilder, Google Analytics und Quantserve für analytische Informationen. Diese Art der Integration mehrerer Unternehmen ist das, wovon die SOAP-Welt nur träumt . Eines der besten Beispiele ist die Tatsache, dass die jQuery-Bibliotheken, mit denen die StackOverflow-Benutzeroberfläche gesteuert wird, aus dem Content Delivery Network von Google abgerufen werden. Die Tatsache, dass SO den Client (dh Ihren Webbrowser) anweisen könnte, Code von einer Website eines Drittanbieters herunterzuladen, um die Leistung zu verbessern, ist ein Beweis für die geringe Kopplung zwischen Webclient und Server.
Dies sind Beispiele für eine REST-Architektur bei der Arbeit.
Jetzt verstoßen einige Websites / Anwendungen gegen die REST-Regeln, und der Browser funktioniert nicht wie erwartet.
- Das berüchtigte Problem mit der Zurück-Schaltfläche
wird durch die Verwendung des serverseitigen Sitzungsstatus verursacht.
- Der Lastausgleich kann zu einem Problem werden, wenn Sie den serverseitigen Sitzungsstatus haben.
- Flash-Anwendungen verhindern häufig, dass die URL eine Darstellung spezifisch identifiziert.
- Das andere Problem, das Webbrowser beschädigt, ist die schlechte Konformität mit den Standards für Medientypen. Wir hören die ganze Zeit darüber, wie IE6 getötet werden muss. Das Problem dort ist, dass Standards nicht richtig befolgt oder aus irgendeinem Grund ignoriert wurden.
- Die Verwendung von Anmeldesitzungen ist die Quelle vieler Sicherheitslücken.
REST ist überall. Es ist der Teil des Webs, der dafür sorgt, dass es gut funktioniert. Wenn Sie verteilte Anwendungen erstellen möchten, die sich wie das Web skalieren lassen, sich wie das Web ändern und die Wiederverwendung fördern können, wie es das Web getan hat, befolgen Sie dieselben Regeln wie beim Erstellen von Webbrowsern.