Warum verletzt die Aufnahme eines Aktionsverbs im URI in einer REST-Implementierung das Protokoll?

8

Ich finde es notwendig zu verstehen, warum die Einbeziehung von Aktionsverben in den URI das REST-Protokoll für die URI-Syntax verletzt? Wenn ich den folgenden Artikel lese, merke ich, dass zu viele Leute zu viel Lärm um Verben machen und dass sie mehr Lärm über Inhaltstypen machen sollten:

RestWiki: Minimale Methoden

In einer perfekten Welt würden alle Client-Browser GET, POST, PUT und DELETE für Anfrageoperationen unterstützen. Es werden jedoch nur GET und POST unterstützt, was bedeutet, dass wir versuchen, Operationen zu identifizieren, die PUT und DELETE sein sollen, indem wir allgemeine Aktionsverben in der URL-ähnlichen Ansicht verwenden, erstellen, bearbeiten und löschen.

Wie verstößt dies gegen den Geist der REST-Architekturprinzipien und was ist der Roadblock, den Sie erleben, indem Sie etwas wie "Löschen" in Ihre URL einfügen, anstatt "Löschen" zu verwenden?

    
user4903 31.01.2010, 22:50
quelle

2 Antworten

15

Der einzige gültige Grund für die Anleitung zu URIs besteht darin, die korrekte Verwendung der REST-Verben zu fördern. Wenn eine Anfrage eine Aktion ausführt, die mit der Erwartung des Clients gemäß den HTTP-Standards übereinstimmt, ist es wirklich egal, was die URL enthält.

Die Benennung von URLs basierend auf Substantiven ermöglicht es, ein Verhalten zu erstellen, das dem beabsichtigten Zweck von GET, PUT, POST und DELETE entspricht.

Wenn Sie Verben in die URL einfügen, kann das sehr verwirrend werden, da das HTTP-Verb oft widersprüchliches Verhalten zu dem in der URL hat. REST-Regeln sagen, dass Sie das HTTP-Verb beachten müssen, aber normalerweise ist die URL beschreibender, so dass sie irreführend sein kann.

Die Tatsache, dass Browser nur eine Teilmenge von HTTP-Verben unterstützen, ist nicht wirklich relevant, denn selbst wenn Sie vollen Zugriff auf alle HTTP-Verben haben, müssen Sie andere Verben wie Drucken, Schließen, Bestätigen, abbrechen.

Sie haben absolut Recht, dass sich die Leute bei der Diskussion über REST-Implementierungen viel mehr auf Inhaltstypen als auf die URL-Struktur konzentrieren müssen.

Wenn Sie Ihre URLs auf Substantive beziehen, handelt es sich nicht um eine REST-Einschränkung, sondern darum, Leute dazu zu ermutigen, in die Falle des Erfolgs zu geraten.

    
Darrel Miller 01.02.2010, 04:54
quelle
3

REST ist kein Protokoll, sondern ein Stil. Somit steht es Ihnen frei, alles zu tun, was Ihren Anforderungen entspricht.

HTTP-Verben werden nach Möglichkeit bevorzugt, da sie Teil des HTTP-Protokolls und als solcher Standard sind. Außerdem können Sie vorhandene Sicherheits- und Cache-Layer auf einem Standard-Webserver verwenden, ohne eine maßgeschneiderte Middleware erstellen zu müssen.

REST schlägt vor, dass wir HTTP integrieren sollten und keine Abstraktionsebenen wie SOAP, RPC oder CORBA hinzufügen sollten. Das Hinzufügen zusätzlicher Verben oder das Hinzufügen dieser Verben zur URL könnte als Abstraktion mit geringem Gewicht betrachtet werden.

Wie Sie jedoch ausdrücklich erwähnen, werden diese nicht durchgängig in Browsern oder einigen Flash-Versionen unterstützt. Daher kann es notwendig sein, sie in der realen Welt in die URL zu setzen, wenn Sie von der Client-Seite aus zugreifen.

Sie sollten sich dies jedoch genau ansehen, da bei der Ausführung von DELETE / PUT über eine URL schwerwiegende Sicherheitsprobleme auftreten können.

Ich würde vorschlagen, dass die Verben GET POST PUT und DELETE für praktisch jeden Bedarf geeignet sind. Sie sollten keine neuen Verben oder Antwortcodes benötigen, da diese generisch sein sollen. Fügen Sie weitere Informationen in den Anfrage- und Antwortdaten hinzu.

Sieh dir diesen SO-Artikel für weitere Informationen an: REST verstehen: Verben, Fehlercodes und Authentifizierung

    
Matt 23.05.2017 12:09
quelle

Tags und Links