Ist es angemessen, mit REST andere Aktionen als das einfache Erstellen (POST), Lesen (GET), Aktualisieren (PUT) und Löschen (DELETE) durchzuführen? Ich bin irgendwie neu in der ganzen RESTful Theologie, also ertragen Sie mit mir, aber wie soll ich folgendes erreichen:
Mein erster Gedanke war, 1. die Authentifizierung irgendeiner Art zu aktivieren, 2. in der serverseitigen Antwort auf einen GET-Aufruf den Platz zu reservieren und das Ergebnis zurückzugeben und 3. eine sofortige "Unerhaltung" des Objekts über einen DELETE-Aufruf bereitzustellen . Wird das immer noch RESTful?
Ja, es ist in Ordnung, Aktionen mit Ruhe auszuführen. Es kommt darauf an, dass diese Aktionen von den Repräsentationen geleitet werden, die Sie austauschen.
Wenn Sie über die Funktionsweise des Webs (über einen Browser) nachdenken, tun Sie dies ständig: Sie erhalten ein HTML-Formular, mit dem Sie eine Reihe von Aktionen auswählen können, die Sie ausführen können. Dann senden Sie das Formular (in der Regel über POST
) und die Aktion wird ausgeführt.
Es ist gut, DELETE
über einen programmgesteuerten Client verwenden zu können (was von Nicht-AJAX-Anfragen in Browsern nicht unterstützt wird), aber der Gesamtansatz eines REST-basierten Systems sollte dem, was Sie finden, sehr ähnlich sein für Websites (dh der Schwerpunkt sollte auf den Darstellungen liegen: das Äquivalent von Webseiten in Ihrem System).
GET
sollte keine Nebenwirkungen haben. Verwenden Sie daher nicht GET
, um die Reservierung selbst zu erstellen, sondern stattdessen etwas wie POST
.
Aus Ihrer Beschreibung ...
2. In der serverseitigen Antwort auf einen GET-Aufruf reservieren Sie das Leerzeichen und geben das Ergebnis zurück
GETs sollten idempotent sein. Aus diesem Grund ist Ihr Service wahrscheinlich nicht erholsam, da der Zustand des Systems nach dem ersten GET anders ist.
Sie müssen wirklich berücksichtigen, dass eine Reservierung eine Ressource ist und mit einem POST in einem Reservierungscontainer erstellt werden sollte, der den URI der neuen Ressource im Location-Header der HTTP-Antwort zurückgibt. Diese UrI kann von Get verwendet werden, um die Ressource zurückzugeben und mit einem PUT aktualisiert zu werden
Beitrag sollte verwendet werden, um eine vorhandene Ressource zu erweitern und Put, um den Status einer Ressource zu ersetzen. In Ihrem Fall sollte die Post eine Liste von Reservierungen aktualisieren und den URI des neuen Inhalts zurückgeben Ressource (nicht nur die ich). Put kann verwendet werden, um den Status zu ändern, der mit der von der UR identifizierten Ressource verknüpft ist.
Sie sind auf dem richtigen Weg, aber Ihre Reservierung des Objekts sollte mit einem PUT sein; Sie fügen eine Reservierung für das Objekt ein, d. h. ändern Sie das zugrunde liegende Objekt.
PUT ist das richtige Verb hier, da Sie wissen, welche Ressource Sie ändern, und sie sollte für mehrere Anfragen idempotent sein.
Tags und Links rest restful-architecture