Nur um zu überprüfen, REST
hat bestimmte Eigenschaften, die ein Entwickler folgen sollte, um es zu machen RESTful
:
Was ist REST?
Laut Wikipedia:
Der REST-Architekturstil beschreibt die folgenden sechs Einschränkungen, die auf die Architektur angewendet werden, während die Implementierung der einzelnen Komponenten frei gestaltet werden kann:
- Client-Server: Server sind nicht mit der Benutzeroberfläche oder dem Benutzerstatus befasst, sodass Server einfacher und skalierbarer sein können.
- Statuslos: Die Client-Server-Kommunikation wird weiter eingeschränkt, da zwischen den Anforderungen kein Client-Kontext auf dem Server gespeichert wird.
- Zwischenspeicherbar: Antworten müssen sich implizit oder explizit als zwischenspeicherbar definieren oder nicht, um zu verhindern, dass Clients veraltete oder unangemessene Daten als Antwort auf weitere Anforderungen wiederverwenden.
- Schichtsystem: Ein Client kann normalerweise nicht feststellen, ob er direkt mit dem Endserver oder einem Vermittler verbunden ist. Zwischenserver können die Skalierbarkeit des Systems verbessern, indem sie den Lastausgleich ermöglichen und gemeinsam genutzte Caches bereitstellen.
- Code on Demand (optional): Server können die Funktionalität eines Clients durch Übertragung von ausführbarem Code vorübergehend erweitern oder anpassen.
- Einheitliche Schnittstelle: Die unten beschriebene einheitliche Schnittstelle zwischen Clients und Servern vereinfacht und entkoppelt die Architektur, sodass sich jedes Teil unabhängig entwickeln kann. (dh HTTP GET, POST, PUT, PATCH, DELETE)
Was die Verben tun sollen
Der SO-Benutzer Daniel Vasallo hat die Verantwortlichkeiten dieser Methoden in der Frage Grundlegendes zu REST: Verben, Fehlercodes und Authentifizierung gut dargelegt :
Beim Umgang mit einer Sammlungs-URI wie: http://example.com/resources/
GET: Listen Sie die Mitglieder der Sammlung zusammen mit ihren Mitglieds-URIs für die weitere Navigation auf. Listen Sie zum Beispiel alle zum Verkauf stehenden Autos auf.
PUT: Bedeutung definiert als "Ersetzen der gesamten Sammlung durch eine andere Sammlung".
POST: Erstellen Sie einen neuen Eintrag in der Sammlung, in dem die ID automatisch von der Sammlung zugewiesen wird. Die erstellte ID ist normalerweise Teil der von dieser Operation zurückgegebenen Daten.
LÖSCHEN: Bedeutung definiert als "Löschen der gesamten Sammlung".
Um Ihre Frage zu beantworten:
Ist es richtig zu sagen, dass ich es mit einer POST-Abfrage verwenden kann? ...
Sind diese beiden Abfragen gleich? Kann ich auf jeden Fall die zweite Variante verwenden oder sollte in der Dokumentation ausdrücklich angegeben werden, dass ich sowohl GET- als auch POST-Abfragen verwenden kann?
Wenn Sie einen einfachen alten RPC-API-Aufruf schreiben, können diese technisch ausgetauscht werden, solange sich die Seite des Verarbeitungsservers zwischen beiden Aufrufen nicht unterscheidet. Damit der Aufruf jedoch REST-fähig ist, sollte der Aufruf des Endpunkts über die GET
Methode eine andere Funktionalität (das Abrufen von Ressourcen) als die POST
Methode (das Erstellen neuer Ressourcen) aufweisen.
Randnotiz: Es gibt einige Debatten darüber, ob POST
auch zum Aktualisieren von Ressourcen verwendet werden darf oder nicht ... obwohl ich das nicht kommentiere, sage ich Ihnen nur, dass einige Leute ein Problem mit diesem Punkt haben.
GET
undPOST
sollte eine andere Semantik haben, also lautet die allgemeine Antwort vielleicht "Ich hoffe nicht"