Hallo Felix,
oder sich als schwer wartbar erwiesen haben.
dieses trifft wohl auf mein Beispiel zu. Habe ich das richtig verstanden? Denn einem Grundprinzip des Web widersprechend erkenne ich dann doch nicht darin.
Ein Grundprinzip des Webs ist es, dass hinter einer URL sich eine Resource befindet. Dieses Prinzip weichst du auf, wenn du hinter einer URL n>1 Aktionen ausführen kannst.
Das „wir schicken alles via
POST
an eine Resource und entscheiden dann, was getan wird“ ist eins davon; das wurde bei den SOAP-Java-Webservices der frühen 2000er bis zum Exzess getrieben.Das finde ich per se nicht einmal schlimm.
Es hat sich als problematisch erwiesen in Punkto Wartbarkeit und Komplexität. Außerdem ist es nicht besonders semantisch.
REST-ful hat sich in dieser Hinsicht als überlegen erwiesen. Eine Kombination aus Request Method und URL mappt auf eine Aktion; das führt zu kleineren und weniger komplexen Methoden, zu einem saubererem Interface nach außen und damit insgesamt zu besser wartbarem Code.
Aha. Das habe ich zwar inhaltlich verstanden, sehe aber noch keinen Praxisbezug darin. Hast Du Beispiel-URLs, die das veranschaulichen könnten? Geht das in diese Richtung?
https://example.org/admin/user/delete/12345/
https://example.org/admin/user/edit/12345/
https://example.org/admin/user/new/12345/
Der REST-Weg für eine User-Verwaltung wären folgende URLs:
GET https://example.org/users
für den Index/die User-ListeGET https://example.org/users/1
zur Betrachtung eines einzelnen UsersGET https://example.org/users/1/edit
um das Formular zum Bearbeiten eines Users aufzurufenPOST https://example.org/users
um einen User tatsächlich auch anzulegenPATCH https://example.org/users/1
oderPUT https://example.org/users/1
um einen User zu verändernDELETE https://example.org/users/1
um einen User zu löschen
Solange die Browser noch keine anderen Methoden als GET
oder POST
können werden die anderen Methoden simuliert mit einem POST
-Request und einer Art, die wahre Methode zu identifizieren; manche verwenden dazu einen request parameter _method
(z.B. Rails), manche verwenden URL-Suffixe wie ;put
.
Schau dir ansonsten mal die URLs dieses Forums an, die halten sich weitestgehend an das REST-Prinzip.
Das ist halt wie mit semantischem Markup. Muss man nicht, sollte man aber. Macht mans nicht, hat man Nachteile.
LG,
CK