Ich habe die folgende URI: Posts/{postId}/Comments/{commentId}
Ich möchte Benutzern ermöglichen, einen Kommentar über meine API zu bearbeiten, sollte die Bearbeitung mit POST oder PUT erfolgen?
Einerseits aktualisiert POST den Inhalt einer Ressource, so dass es Sinn macht, andererseits ersetzt PUT ihn durch einen neuen. Also, wenn ich richtig mit POST verstehe, muss ich nur senden, was aktualisiert werden muss und mit PUT sende ich die ganze Ressource.
Normalerweise wird in Edit-Formularen die gesamte Ressource trotzdem geladen. Worum geht es bei der Verwendung von POST?
Wenn ich den einen oder anderen Ansatz nehme, worin bestehen die Unterschiede?Soll eine Bearbeitung eines Kommentars über POST oder PUT gesendet werden?
Antwort
Von dem, was ich (in RESTful Web Services, published by O'Reilly) gelesen haben, es scheint klar zu sein, dass Sie PUT
verwenden sollten einen vorhandenen Kommentar zu aktualisieren.
PUT
soll für die Aktualisierung sowie die Schaffung einer Ressource verwendet werden soll.POST
kann auch zum Erstellen einer Ressource verwendet werden. Der Unterschied besteht darin, dass Sie bei Verwendung derPOST
nicht den genauen URI der zu erstellenden Ressource kennen müssen. (Der Dienst meldet den URI der neuen Ressource in seiner Antwort.)POST
eignet sich für partielle Aktualisierungen oder beim Anhängen von Informationen an eine Ressource;PUT
ist für eine vollständige Aktualisierung (Ersetzung) einer Ressource geeignet.Wenn Sie aktualisieren, können Sie teilweise Updates senden, aber Sie sollten sicherstellen, dass diese idempotent sind; dh. Wenn Sie das gleiche Update mehrmals senden, hat das Update immer den gleichen Effekt. Senden Sie kein Update wie "Erhöhen n um 1"; Senden Sie stattdessen ein Update wie "Setzen Sie n auf 5."
So ist mein Vorschlag für Ihren Fall ist wie folgt:
Verwenden
POST
-/Posts/{postId}/Comments
einen neuen Kommentar zu erstellen, da der Client nicht die{commentId}
im Voraus nicht kennt.Verwenden Sie
PUT
/Posts/{postId}/Comments/{commentId}
, um einen Kommentar (oder vielleichtPOST
beim Anhängen von Text) vollständig zu aktualisieren.
siehe hier: PUT vs POST in REST
- 1. .NET 4.5 Httpclient PUT oder POST über SSL nicht immer
- 2. Wann soll der HTTP-Statuscode gesendet werden?
- 3. Hinzufügen eines Kommentars für einen Blog-Post mit UpdateView
- 4. Escaping von jQuery-Daten, die über POST gesendet werden
- 5. REST „Trockenlauf“ Option für PUT oder POST
- 6. Backbone.save POST anstelle von PUT
- 7. html POST-Daten werden nicht gesendet
- 8. Soll ich POST verwenden oder Verb DELETE in jQuery.ajax() Funktion
- 9. Wie funktioniert eine Put-Anfrage über Angular, Express und Mungo?
- 10. Put Parcel über Absicht
- 11. Wie kann der Status eines Eingabefeldes, das per E-Mail gesendet werden soll, hinzugefügt werden?
- 12. HATEOAS verbindet mit PUT/POST
- 13. Backbone mit GET anstelle von PUT oder POST
- 14. Zugriff auf den Rohteil einer PUT- oder POST-Anforderung
- 15. REST-Put/Post-Aufrufe vereinfachen
- 16. Welches CMS oder Plugin soll verwendet werden?
- 17. POST und PUT Anfrage AFNetworking
- 18. Erstellen eines Programms von Avahi gesendet werden
- 19. Wie erhalte ich eine Datei mit MuleESB Jersey mit PUT oder POST?
- 20. Yii2 REST geben eine 405 auf POST, PUT, etc
- 21. Werden Informationen über eine HTTP-Localhost-Verbindung gesendet?
- 22. Besserer Datei-Upload-Ansatz: HTTP-Post-Multipart oder HTTP-Put?
- 23. Ändern des Git-Kommentars eines Push-Commits
- 24. Elasticsearch API POST/PUT DeDupe
- 25. Zusätzliche Bytes in den Pufferpuffer von flatbuffer, der über das Netzwerk gesendet werden soll.
- 26. RP Reich „URN“ werden soll oder „urn
- 27. Datenbankfehler beim Veröffentlichen eines Kommentars über Kommentarfeld in Facebook Iframe-Anwendung
- 28. Wie werden PUT-Parameter an eine Seite übergeben?
- 29. Wie bekomme ich Daten von XML, die über http-Post an mein Skript gesendet werden?
- 30. Welcher ResponseType sollte für das IHttpActionResult einer PUT- oder POST-Anfrage verwendet werden?
Um zu sagen, dass POST den Inhalt einer Ressource aktualisiert, wird die Verwendung von POST eingeschränkt. Siehe "http: // tools.ietf.org/html/Entwurf-ietf-httpbis-p2-semantics-12 # section-7.5" für die aktuellste Definition. –