Verwenden URLs Ihre Objekte angeben, nicht Ihre Aktionen:
/questions/show/<whatever>
Stattdessen sollten Sie Ihre URLs verwenden, um Ihre Objekte angeben:
Hinweis, was Sie zuerst nicht RESTful erwähnt ist
/questions/<question>
Dann führen Sie eine der folgenden Operationen auf dieser Ressource durch.
GET:
verwendet, um eine Ressource zu erhalten, eine Liste von Ressourcen abfragen und auch schreibgeschützte Informationen über eine Ressource abzufragen.
Um eine Frage Ressource zu erhalten:
GET /questions/<question> HTTP/1.1
Host: whateverblahblah.com
alle Frage Ressourcen aufzulisten:
GET /questions HTTP/1.1
Host: whateverblahblah.com
POST:
verwendet, um eine Ressource zu erstellen.
Beachten Sie, dass der folgende Text ist ein Fehler:
POST /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
Wenn die URL noch nicht erstellt wurde, sollten Sie nicht POST verwenden, es zu erstellen, während Sie den Namen angeben. Dies sollte dazu führen, dass eine Ressource nicht gefunden wird, weil sie noch nicht existiert. Sie sollten zuerst die Ressource auf dem Server PUT. Sie könnten argumentieren, dass Sie beim Erstellen einer neuen Frage auch die Ressource/questions aktualisieren, da sie jetzt eine weitere Frage in ihrer Liste von Fragen zurückgibt.
Sie sollten etwas tun, eine Ressource mit POST zu erstellen:
POST /questions HTTP/1.1
Host: whateverblahblah.com
Beachten Sie, dass der Ressourcenname in diesem Fall nicht angegeben ist, die neue Objekte URL-Weg würde an Sie zurückgegeben werden.
LÖSCHEN:
verwendet, um die Ressource zu löschen.
DELETE /questions/<question> HTTP/1.1
Host: whateverblahblah.com
PUT:
verwendet, um eine Ressource zu erstellen, oder überschreiben, während Sie die Ressourcen-URL angeben.
Für eine neue Ressource:
PUT /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
eine bestehende Ressource zu überschreiben:
PUT /questions/<existing_question> HTTP/1.1
Host: whateverblahblah.com
... Ja, sie sind die gleichen. PUT wird oft als "Edit" -Methode bezeichnet, da Sie durch das Ersetzen der gesamten Ressource durch eine leicht geänderte Version bearbeitet haben, was die Clients bei der nächsten Ausführung erhalten.
Mit REST in HTML-Formularen:
Die HTML5 spec defines GET and POST for the form element.
The method content attribute is an enumerated attribute with the following keywords and states:
- The keyword GET, mapping to the state GET, indicating the HTTP GET method.
- The keyword POST, mapping to the state POST, indicating the HTTP POST method.
Technisch ist die HTTP-Spezifikation beschränken Sie sich nicht nur auf diese Methoden. Sie sind technisch frei, irgendwelche Methoden hinzuzufügen, die Sie wünschen, aber in der Praxis ist das keine gute Idee. Die Idee ist, dass jeder weiß, dass Sie GET verwenden, um die Daten zu lesen, so dass es verwirren wird, wenn Sie sich entscheiden, stattdessen READ zu verwenden. Das sagt ...
PATCH:
Dies ist eine Methode, die in einer formalen RFC definiert wurde. Es ist für verwendet, wenn Sie nur eine teilweise Änderung einer Ressource senden wollen, wäre es viel wie PUT verwendet werden:
PATCH /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
Der Unterschied PUT ist, hat die gesamte Ressource zu senden, egal wie groß es wird verglichen mit dem, was tatsächlich geändert wird, während PATCH nur die Änderungen senden können.
Hi Brian .. je mehr ich das lese, desto mehr macht es Sinn. Ich nehme an, dass einige Browser (oder Browserversionen) PUT oder DELETE nicht unterstützen? Wenn das der Fall ist, verwenden wir stattdessen POST? –
Hallo Pure.Knome; Webbrowser unterstützen sie alle, auch jede HTTP-Bibliothek sollte sie alle unterstützen. –
Ich würde empfehlen, dieses Buch übrigens zu kaufen, wenn Sie alles über REST erfahren möchten http://oreilly.com/catalog/9780596529260/ –