2010-12-29 6 views
1

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?

+0

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. –

Antwort

2

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 der POST 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 vielleicht POST beim Anhängen von Text) vollständig zu aktualisieren.

Verwandte Themen