Verwenden Sie URLs, um Ihre Objekte und nicht Ihre Aktionen anzugeben:
Beachten Sie, dass das, was Sie zuerst erwähnt haben, nicht RESTful ist:
/questions/show/<whatever>
Stattdessen sollten Sie Ihre URLs verwenden, um Ihre Objekte anzugeben:
/questions/<question>
Anschließend führen Sie eine der folgenden Operationen für diese Ressource aus.
BEKOMMEN:
Wird verwendet, um eine Ressource abzurufen, eine Liste von Ressourcen abzufragen und um schreibgeschützte Informationen zu einer Ressource abzufragen.
So erhalten Sie eine Fragenressource:
GET /questions/<question> HTTP/1.1
Host: whateverblahblah.com
So listen Sie alle Fragenressourcen auf:
GET /questions HTTP/1.1
Host: whateverblahblah.com
POST:
Wird zum Erstellen einer Ressource verwendet.
Beachten Sie, dass Folgendes ein Fehler ist:
POST /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
Wenn die URL noch nicht erstellt wurde, sollten Sie POST nicht verwenden, um sie zu erstellen, während Sie den Namen angeben. Dies sollte zu einem Fehler führen, bei dem die Ressource nicht gefunden wurde, da er noch nicht vorhanden ist. Sie sollten die Ressource zuerst auf den Server stellen. Sie könnten argumentieren, dass Sie durch das Erstellen einer neuen Frage auch die Ressource / question aktualisieren, da jetzt eine weitere Frage in der Liste der Fragen zurückgegeben wird.
Sie sollten Folgendes tun, um mithilfe von POST eine Ressource zu erstellen:
POST /questions HTTP/1.1
Host: whateverblahblah.com
Beachten Sie, dass in diesem Fall der Ressourcenname nicht angegeben wird und der URL-Pfad für neue Objekte an Sie zurückgegeben wird.
LÖSCHEN:
Wird zum Löschen der Ressource verwendet.
DELETE /questions/<question> HTTP/1.1
Host: whateverblahblah.com
STELLEN:
Wird verwendet, um eine Ressource zu erstellen oder zu überschreiben, während Sie die Ressourcen-URL angeben.
Für eine neue Ressource:
PUT /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
So überschreiben Sie eine vorhandene Ressource:
PUT /questions/<existing_question> HTTP/1.1
Host: whateverblahblah.com
... Ja, sie sind gleich. PUT wird häufig als "Bearbeitungsmethode" bezeichnet. Wenn Sie die gesamte Ressource durch eine leicht geänderte Version ersetzen, haben Sie bearbeitet, welche Clients beim nächsten Mal abgerufen werden.
Verwenden von REST in HTML-Formularen:
Die HTML5-Spezifikation definiert GET und POST für das Formularelement .
Das Attribut content method ist ein Aufzählungsattribut mit den folgenden Schlüsselwörtern und Zuständen:
- Das Schlüsselwort GET, das dem Status GET zugeordnet ist und die HTTP-GET-Methode angibt.
- Das Schlüsselwort POST, das dem Status POST zugeordnet ist und die HTTP-POST-Methode angibt.
Technisch gesehen beschränkt sich die HTTP-Spezifikation nicht nur auf diese Methoden. Es steht Ihnen technisch frei, beliebige Methoden hinzuzufügen. In der Praxis ist dies jedoch keine gute Idee. Die Idee ist, dass jeder weiß, dass Sie GET zum Lesen der Daten verwenden. Dies verwirrt die Sache, wenn Sie sich stattdessen für READ entscheiden. Das gesagt...
PATCH:
Dies ist eine Methode, die in einem formalen RFC definiert wurde. Es wurde entwickelt, um zu verwenden, wenn Sie nur eine teilweise Änderung an eine Ressource senden möchten. Es wird ähnlich wie PUT verwendet:
PATCH /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
Der Unterschied besteht darin, dass PUT die gesamte Ressource senden muss, egal wie groß sie im Vergleich zu den tatsächlich geänderten Ressourcen ist, während PATCH nur die Änderungen senden kann .
Angenommen, es
/questions/10
handelt sich um eine gültige Frage, dann wird die Methode verwendet, um mit ihr zu interagieren.POST, um es hinzuzufügen
PUT zum Erstellen oder Ersetzen
GET, um es anzuzeigen / abzufragen
und LÖSCHEN zu gut .. löschen Sie es.
Die URL ändert sich nicht.
quelle
Ich werde auf die Nerven gehen und vermuten, dass Sie, was Sie meinen, Standard-Controller für MVC sind, wenn Sie "RESTful" -URLs sagen, da Ihre Beispiele als nicht "RESTful" angesehen werden könnten (siehe dies) Artikel).
Da Rails den URL-Stil, an dem Sie interessiert zu sein scheinen, wirklich populär gemacht hat, biete ich nachfolgend die Standard-Controller-Aktionen an, die vom ScaffoldingGenerator in Ruby on Rails erstellt wurden. Diese sollten jedem bekannt sein, der eine Rails-Anwendung verwendet.
Normalerweise konstruieren Sie dies wie folgt:
quelle
Hier ist eine Zuordnung Ihrer aktuellen URLs nach dem REST-Prinzip:
Wenn Sie die Frage als Ressource identifizieren, sollte sie eine eindeutige URL haben. Die Verwendung von GET zum Anzeigen (Abrufen) ist die gängige Praxis. Es wird:
Jetzt möchten Sie, dass Ihr Benutzer eine andere Ansicht derselben Ressource hat, mit der er die Ressource bearbeiten kann (möglicherweise mit Formularsteuerelementen).
Zwei Optionen: Ihre Anwendung ist eine Anwendung (keine Website). Dann verwenden Sie möglicherweise besser JavaScript, um die Ressource auf der Clientseite in eine bearbeitbare Ressource umzuwandeln.
Wenn es sich um eine Website handelt, können Sie dieselbe URL mit zusätzlichen Informationen verwenden, um eine andere Ansicht anzugeben. Die gängige Vorgehensweise scheint folgende zu sein:
Dies dient dazu, die Frage zu ändern, sodass PUT die richtige Methode ist:
Die Liste der Fragen ist eigentlich die übergeordnete Ressource einer Frage, daher ist es natürlich:
Jetzt brauchen Sie vielleicht noch etwas:
Tada :)
quelle
Ihre vier Beispiele könnten sein:
So fügen Sie eine Frage hinzu:
Der Server würde antworten:
quelle