Ich habe viel darüber gelesen, kann aber keine Schlussfolgerung zu diesem Thema ziehen.
Ich habe jedoch noch nie PUT- oder DELETE-HTTP-Anforderungsmethoden verwendet. Meine Tendenz ist, GET zu verwenden, wenn der Status des Systems (meine Anwendung oder Website) möglicherweise nicht betroffen ist (wie die Produktliste), und POST zu verwenden, wenn es betroffen ist (Bestellung aufgegeben). Ist es nicht ausreichend oder fehlt mir etwas?
http
web
httprequest
web-deployment
Rupesh Patel
quelle
quelle
Antworten:
DELETE dient zum Löschen der Anforderungsressource:
PUT dient zum Speichern oder Aktualisieren einer Ressource auf dem Server:
Für die vollständige Spezifikation besuchen Sie:
Da aktuelle Browser leider keine anderen Verben als POST und GET in HTML-Formularen unterstützen , können Sie HTTP normalerweise nicht in vollem Umfang nutzen (Sie können ihre Übermittlung jedoch weiterhin über JavaScript entführen). Das Fehlen einer Unterstützung für diese Methoden in HTML-Formularen führte zu URIs, die Verben enthielten, wie zum Beispiel
oder noch schlimmer
CRUD-Semantik effektiv über HTTP tunneln. Aber Verben sollten niemals Teil der URI sein. Stattdessen bietet HTTP bereits den Mechanismus und die Semantik zum CRUD einer Ressource (z. B. einer Bestellung) über die HTTP-Methoden. HTTP ist ein Protokoll und nicht nur ein Datentunneldienst.
Um eine Ressource auf dem Webserver zu löschen, rufen Sie an
und um es zu aktualisieren, würden Sie anrufen
und stellen Sie die aktualisierte Ressourcendarstellung im PUT-Text bereit, damit der Webserver sie dann anwenden kann.
Wenn Sie also eine Art Client für eine REST-API erstellen , wird diese wahrscheinlich PUT- und DELETE-Anforderungen senden. Dies kann ein Client sein, der in einem Browser erstellt wurde, z. B. das Senden von Anforderungen über JavaScript, oder ein Tool, das auf einem Server ausgeführt wird usw.
Weitere Informationen finden Sie unter:
quelle
Mit dem HTTP-Anforderungsverb wie GET, POST, DELETE, PUT usw. können Sie RESTful-Webanwendungen erstellen. Lesen Sie hier darüber: http://en.wikipedia.org/wiki/Representational_state_transfer
Der einfachste Weg, um die Vorteile daraus zu erkennen, ist dieses Beispiel. Jedes MVC-Framework verfügt über eine
Router/Dispatcher
URL, die actionControllern URLs zuordnet. Also URL wie folgt :/blog/article/1
würde aufrufenblogController::articleAction($id);
Jetzt kennt dieser Router nur noch die URL oder/blog/article/1/
Wenn dieser Router jedoch das gesamte HTTP-Anforderungsobjekt anstelle nur der URL kennt, kann er auf das HTTP-Anforderungsverb (GET, POST, PUT, DELETE ...) und viele andere nützliche Informationen zur aktuellen HTTP-Anforderung zugreifen.
Auf diese Weise können Sie die Anwendung so konfigurieren, dass sie dieselbe URL akzeptiert und sie je nach HTTP-Anforderungsverb verschiedenen actionControllern zuordnet.
Beispielsweise:
Wenn Sie Artikel 1 abrufen möchten, können Sie dies tun:
Wenn Sie jedoch Artikel 1 löschen möchten, gehen Sie folgendermaßen vor:
Beachten Sie, dass beide HTTP-Anforderungen denselben URI / blog / article / 1 haben. Der einzige Unterschied besteht im Verb HTTP-Anforderung. Und basierend auf diesem Verb kann Ihr Router verschiedene actionController aufrufen. Auf diese Weise können Sie saubere URLs erstellen.
Lesen Sie diese beiden Artikel, sie könnten Ihnen helfen:
Symfony 2 - HTTP-Grundlagen
Symfony 2 - Routing
In diesen Artikeln geht es um das Symfony 2-Framework. Sie können Ihnen jedoch dabei helfen, herauszufinden, wie HTTP-Anforderungen und -Antworten funktionieren.
Hoffe das hilft!
quelle
Create
und 1 fürDelete
. Wenn Sie dies tun, wird Ihre nächste Suche nach " So haben Sie mehrere Post-Aktionen in einem einzigen Controller " sein: P. Nicht, dass dies schrecklich wäre, aber Sie verlieren die Möglichkeit, eine eindeutige Ressource über die Verbaktion implementieren zu lassen, anstatt den Aktionsnamen explizit in der URI angeben zu müssen.Sichere Methoden: Ressource
abrufen / Keine Änderung der Ressource Idempotent: Keine Änderung des Ressourcenstatus bei
mehrmaliger Anforderung Unsichere Methoden: Erstellen oder Aktualisieren der Ressource / Änderung der Ressource
Nicht-Idempotent: Änderung des Ressourcenstatus bei mehrmaliger Anforderung
Entsprechend Ihrer Anforderung:
1) Verwenden Sie für einen sicheren und idempotenten Betrieb (Fetch Resource) --------- GET METHOD
2) Für einen unsicheren und nicht idempotenten Betrieb (Insert Resource) verwenden Sie --------- POST METHOD
3) Für unsichere und idempotente Operationen (Ressource aktualisieren) verwenden Sie --------- PUT-METHODE
3) Für unsichere und idempotente Operationen (Ressource löschen) verwenden Sie --------- LÖSCHMETHODE
quelle
Obwohl ich das Risiko eingehen möchte, nicht beliebt zu sein, sage ich, dass sie heutzutage nicht mehr nützlich sind .
Ich denke, sie waren in der Vergangenheit gut gemeint und nützlich, als beispielsweise DELETE den Server aufforderte, die unter der angegebenen URL gefundene Ressource zu löschen, und PUT (mit seinem Geschwister-PATCH) den Server aufforderte, auf idempotente Weise zu aktualisieren.
Die Dinge entwickelten sich und URLs wurden virtuell (siehe z. B. das Umschreiben von URLs ), wodurch Ressourcen ihre ursprüngliche Bedeutung als realer Ordner / Unterbedarf / Datei verloren. Daher verloren CRUD-Aktionsverben, die von HTTP-Protokollmethoden (GET, POST, PUT / PATCH, DELETE) abgedeckt wurden, den Überblick .
Nehmen wir ein Beispiel:
Auf der linken Seite ist die HTTP-Methode nicht geschrieben, im Wesentlichen spielt es keine Rolle (POST und GET sind ausreichend) und auf der rechten Seite werden geeignete HTTP-Methoden verwendet.
Die rechte Seite sieht elegant, sauber und professionell aus. Stellen Sie sich vor, Sie müssen jetzt einen Code pflegen, der die elegante API verwendet, und Sie müssen suchen, wo der Löschaufruf ausgeführt wird. Sie suchen nach "api / entity" und müssen unter den Ergebnissen sehen, welche DELETE ausführt. Oder noch schlimmer, Sie haben einen Junior-Programmierer, der versehentlich PUT mit DELETE umgeschaltet hat und als URL die gleiche Scheiße passiert ist.
Meiner Meinung nach hat das Einfügen des Aktionsverbs in die URL Vorteile gegenüber der Verwendung der entsprechenden HTTP-Methode für diese Aktion, auch wenn sie nicht so elegant ist. Wenn Sie sehen möchten, wo der Löschaufruf erfolgt, müssen Sie nur nach "api / entity / delete" suchen. suchen und Sie werden ihn sofort finden.
Das Erstellen einer API ohne das gesamte HTTP-Methodenarray erleichtert das anschließende Konsumieren und Verwalten
quelle