Eine Menge Verwirrung über REST existiert, weil viele Leute von REST-Einschränkungen hören und denken, dass sie Regeln sind, die aus keinem anderen Grund angewendet werden, als der Architektur als Selbstzweck zu folgen.
Die eigentliche Frage, die Sie sich stellen sollten, ist, warum die statusfreie Einschränkung in REST existiert und welche Vorteile Sie daraus ziehen. Denken Sie daran, dass REST ein Architekturstil ist, der für die langfristige Entwicklung großräumiger verteilter Systeme gedacht ist. Sie werden einfach nicht die Probleme haben, die REST in einer kleinen Anwendung lösen soll, wo eine einzige Datenbank alle Ihre Informationen enthält.
Die statusfreie Einschränkung induziert die Eigenschaft der Sichtbarkeit, Zuverlässigkeit und Skalierbarkeit. Die Sichtbarkeit wurde verbessert , da ein Überwachungssystem nicht über ein einziges Anfragedatum hinausschauen muss, um die vollständige Natur der Anfrage zu ermitteln. Die Zuverlässigkeit wird verbessert, da sie die Wiederherstellung von Teilausfällen erleichtert, die von stammen. Die Skalierbarkeit wird verbessert, da der Status zwischen den Anforderungen nicht gespeichert werden muss, um die Serverkomponente schnell auf freie Ressourcen zu verteilen und die Implementierung weiter zu vereinfachen, da der Server die Ressourcennutzung nicht über Anforderungen hinweg verwalten muss.
Wenn also zustandslos ist, bedeutet dies, dass die Clientanforderung alle erforderlichen Informationen zur Verarbeitung haben sollte.
Wie wichtig ist die Sichtbarkeit für Sie? Möchten Sie den gesamten Inhalt des Einkaufswagens aus der Client-Anfrage sehen können, wenn Sie etwas debuggen, oder sind Sie damit einverstanden, diese Informationen aus den Datenbanken zu bekommen?
Wie wichtig ist Zuverlässigkeit? Verfügen Sie über ein großes verteiltes System mit mehreren Servern und Datenbanken? Wenn Sie ein großes verteiltes System haben, in dem die Einkaufswageninformationen abhängig vom genauen HTTP-Server, der die Anfrage beantwortet hat, in verschiedenen Datenbanken gespeichert werden, kann bei einem Serverausfall nur ein anderer Server aus dieser Gruppe die Anfrage erfüllen und die Sitzung beenden oder ein Server aus einer anderen Gruppe wird den Client zwingen, die Sitzung neu zu starten. Wenn alle Informationen in der Anfrage enthalten sind, kann jeder Server dies tun.
Wie wichtig ist Skalierbarkeit? Wenn Sie ein verteiltes System haben und Einkaufswageninformationen in einer einzigen Datenbank speichern, wird es zu einem Trichter für alle Ihre Anfragen und Sie verlieren die Skalierbarkeit. Wenn Sie es in mehreren Datenbanken speichern, verlieren Sie die Zuverlässigkeit wie oben beschrieben.
Also, haben Sie ehrgeizige langfristige Ziele oder wird Ihre Anwendung groß genug sein, dass Sie die Probleme REST-Versuche zu lösen haben? Wenn Sie immer ein paar Server und eine einzige Datenbank haben und diese für jede einzelne Anfrage verwenden, spielt es keine Rolle, ob Sie staatenlos sind oder nicht. Sie können einfach eine /shopping_cart
Ressource oder etwas ähnliches haben, fügen Sie dazu Zeug mit POST
Anfragen hinzu, und schließen oder löschen Sie es, wenn Sie fertig sind.
Wenn Ihre Daten über mehrere Datenbanken verteilt werden, reagieren viele HTTP-Server auf Anforderungen, Cache-Server usw. und Sie möchten Kapazität dynamisch bereitstellen, indem Sie neue Server nach Bedarf einrichten und konfigurieren Entfernen Sie sie, wenn die Last reduziert ist, dann gehen Sie völlig statuslos und verlassen Sie den Warenkorb mit dem Client.
Sie sollten sich die defacto Hallo Welt von REST (RestBucks Coffee Shop) ansehen. – Aron
Sie verbinden den Status der Sitzung im HTTP-Sinn des Begriffs und ein globales Objekt "Sitzung", das ein Artefakt ist, das von serverseitigen Frameworks bereitgestellt wird. – guillaume31
Ich möchte klarstellen ... Warenkorb, natürlich wird in der Datenbank nach dem Einkauf gespeichert werden, ist die Frage nicht so grundlegend. Meine Frage bezieht sich auf die vierte REST-Einschränkung, die stateless kommuniziert, dh es sind keine Clientsitzungsdaten auf dem Server gespeichert. Und wo wird der Einkaufswagen ein Kunden sein? Diese Frage wird im Folgenden in Antworten geklärt. Vielen Dank. –