Aktionen in der REST API entwerfen - wann ist REST auch zu RESTful?

Ich bin in den Prozess der Entwicklung einer REST-API für ein Projekt an dem wir arbeiten. Das heißt, ich Schreibe die Spezifikationen später eingeführt werden.

Ich bin Sie haben Schwierigkeiten zu denken, in Substantive/Ressourcen statt Handlungen/Verben. Ohne in zu viel projektspezifika, wir schreiben eine API um SVN. Zum Beispiel, nehmen Sie die Aktion, die commits änderungen an den SVN-server. In unserem Projekt haben wir mehrere Definitionen/Versionen der commit-Aktion:

  • einfach verpflichten sich, alle geänderten Dateien
  • verpflichten, eine Liste der geänderten Dateien (eine Teilmenge, anstatt die ganze Reihe von geänderten Dateien)
  • ...

(1) Wie würden Sie die Gestaltung der URL? Die erste Frage ist, wie kann ich beschreiben die commit-Aktion als Substantiv/resource statt einer verb?

Manche würden sagen:

POST/PUT http://server.com/api/revision/commit

Sollte es ein POST oder eine PUT? Ich bin nicht wirklich die Schaffung eines commit-Ressourceso dass es keine POST. Allerdings bin ich mir nicht wirklich ändern commit-Ressourceso ist es nicht eine PUT. Eigentlich ist es nicht ein Ressourcees ist ein Aktion. Sobald die Aktion ausgeführt wird, ist es Weg, es gibt keine Ressource erstellt, geändert oder gehalten werden für eine spätere Referenz.

Das heißt, es muss eine Ressource, also die URL sollte wohl so sein

POST http://server.com/api/revision/commitment

Es ist auch ein POST, denn wir schaffen eine Verpflichtung. Sind wir nicht etwas ändern, also nicht SETZEN. Beachten Sie auch, dass ich geändert Begehen in Engagementder der Tatsache Rechnung tragen, dass wir im Umgang mit Ressourcen.

Macht das Sinn? Für mich ist es nicht, es treibt mich in den Wahnsinn. Ich möchte eine Aktion ausführen können, nicht schaffen, eine Ressource, die ähnelt der Aktion. Aber trotzdem.

Sagte, weiter zu gehen, ich gerade erstellt ein Engagement-Ressource. So logisch, ich sollte in der Lage sein, um es später auf:

GET http://server.com/api/revision/commitment/:id

Aber es gibt keine Verpflichtung Ressource! Ich war gezwungen, zu machen, um Erholsam. Kopf explodiert

Also, wie Sie richtig angeben-Aktionen auf die Ressourcen, die in einer REST-API? Ich spreche nicht über die Art der Maßnahmen, die eine Ressource erstellen (create user, ...), aber über die Art der Handlungen, die manipulieren, eine Ressource oder eine Handlung, die auf eine Ressource (commit revision, ...).

(2) Dann, zweitens, im Fall der zweiten definition (siehe oben), wie beschreiben wir die Teilmenge der geänderten Dateien? Über Parameter oder in eine Struktur (beispielsweise JSON-array) in den KÖRPER? Welche wird bevorzugt? Gibt es irgendwelche Allgemeinen Regeln?

Vielen Dank an alle!

InformationsquelleAutor der Frage Appelsien S. | 2011-07-15

Schreibe einen Kommentar