RESTful Design auf eine gesamte Website anwenden?

11

Das alles mag sehr neu erscheinen, aber ich versuche, mich mit dem Entwerfen einer Website zu beschäftigen, die absolut REST-konform ist. Ich verstehe das Anwenden von RESTful-Design auf Dinge wie Benutzer, Fotos, Blog-Posts usw., weil ich sie als "Objekte" betrachte.

Aber was ist mit einer "Über uns" -Seite? Was für eine Ressource ist das? Ist es überhaupt eine Ressource im wahrsten Sinne des Wortes? Angenommen, ich gehe zur URL "http://www.example.com/". Nach welcher Ressource frage ich? Die Indexressource?

TaylorOtwell
quelle
Ich denke, es ist eine Klarstellung erforderlich. Was ist dein Endziel? Was ist die Notwendigkeit für ein erholsames Design. Was brauchen Sie zu befriedigen, wenn Sie die Ruhe aus der Gleichung herausnehmen?
Jonathan Kaufman
1
Das Endziel ist eine vollständige Website. Die Strukturierung einer Website um ein erholsames Design scheint aufgrund der Funktionsweise des Webs sinnvoll zu sein. Ich bin mir nur nicht sicher, wie ich diese Art von Design auf Dinge anwenden soll, die nicht wie Ressourcen erscheinen, wie z. B. eine Info- oder Kontaktseite.
TaylorOtwell

Antworten:

6

Das häufigste RESTful-Website-Ressourcenmuster, das ich sehe, ist das Hinzufügen einer Ansicht zum URI:

/ resourcetype / identifier [/ view ] [/ page] [? filterparams]

Wenn keine Ansicht vorhanden ist , stellen Sie einfach eine Standardansicht bereit. In deinem Fall:

  • / - Eine Anforderung zur example.comRückgabe der Standardansicht für die Ressource der obersten Ebene - Ihre Website.
  • / aboutus - Die Ansicht "Über uns" der Ressource der obersten Ebene. Alternativ kann es aboutussich auch um eine benannte Kennung für eine Ressource im Bereich des CMS der obersten Ebene handeln. *
  • / customers / 1 / aboutus - Diese Anfrage zeigt eine "Über uns" -Ansicht an, die für Kunde 1 gültig ist .

Abgesehen davon ist es manchmal am besten, ein wenig zu fummeln, um eine bessere Semantik zu erzielen. Zum Beispiel verwendet StackOverflow das RESTful / question / [id] für Fragen, aber die Seite Ask Question ist / question / ask, was nicht sehr RESTful ist ( askkeine questionsRessource), aber sehr sinnvoll ist, nur Sterbliche zu verwenden.


* In CMS auf oberster Ebene wird der Ressourcentyp häufig, aber nicht immer entfernt, da er redundant ist.

Nicole
quelle
10

Beachten Sie, dass RESTful Design per se einen Standard bieten soll, nach dem das Web einheitlich programmierbar wird. Es ist nicht immer angemessen oder nützlich, Ihre gesamte Website mit menschlichem Gesicht in reine REST-Semantik umzuwandeln.

Wenn Sie über Ressourcen verfügen, ist es hilfreich, deren Darstellungen zu berücksichtigen. Es ist auch wichtig, die anderen Gestaltungsprinzipien von REST zu berücksichtigen, z. B. Statuslosigkeit, und wie sie sich auf die Leistung und Benutzerfreundlichkeit Ihrer Website auswirken. Aber denken Sie daran, dass REST ein Werkzeug ist, kein Ziel. Es ist ein Mittel, kein Zweck.

Verwenden Sie RESTful-Semantik, wo dies nützlich ist , nachdem Sie deren Zweck und Vorteile verstanden haben, und schwitzen Sie nicht, wenn Ihre Site nicht perfekt RESTful ist. Es wäre auf jeden Fall für eine nicht triviale Site fast unmöglich.

TL; DR : REST ist ein Werkzeug. Verwenden Sie es, wann und wo es nützlich ist, aber seien Sie nicht daran gebunden.

Rein Henrichs
quelle
2
+1 Es gibt mehr zu ruhen als URLs.
Josh Noe
Ajax, REST und externe Links zu Ihrer REST-Site können ein Albtraum sein. Vielen Dank für Ihre Antwort.
Johnny
4

Aber was ist mit einer "Über uns" -Seite [?] Was für eine Ressource ist das?

Komplex. An einer Ressource mit Komponenten, Teilen oder Strukturen ist nichts auszusetzen.

Ressourcen sind keine "relationalen Datenbankzeilen" oder andere atomare Dinge. Sie sind Ressourcen.

Dokumentorientierte Datenbanken behandeln dies eleganter, da eine Ressource größer und strukturierter sein kann.

Ist es überhaupt eine Ressource im wahrsten Sinne des Wortes?

Ja.

Angenommen, ich gehe zur URL "http://www.example.com/". Nach welcher Ressource frage ich?

Nein.

Sie fragen nach der Ressource "aboutus". Es ist möglich (aber seltsam), dass eine Ressource ein Singleton ist. Keine ID und keine "Liste".

http://www.example.com/aboutus/?format=xml

Gibt ein komplexes XML-Dokument mit vielen Teilen zurück. Daran ist nichts auszusetzen.

Die Indexressource?

Bedeutet nicht viel im "RESTful" Sinne. Die "Index" -Seite ist für Personen. Eine Anwendung, die eine RESTful-API verwendet, fordert bestimmte Arten von Ressourcen an.

S.Lott
quelle
4
+1 Ich möchte einen wichtigen Punkt aus Ihrer Antwort herausziehen: REST ist ein programmierbares Paradigma; Es ist nicht unbedingt für den menschlichen Verzehr bestimmt.
Rein Henrichs
1

Ich würde meine Ansicht unabhängig vom Backend halten. Sie können das Back-End nach Ressourcen wie Dingen auf dem Akkordeon, der Navigationsleiste und anderen Objekten fragen, die sich auf den Körper beziehen. Sie sollten die Verarbeitung dieser Ressourcendarstellungen jedoch Ihrem Client-Code überlassen, der sie schließlich gemäß den Anforderungen rendert.

SPI
quelle
1

Die Ressource für "Über uns" ist ... Us :) ähm, Sie. Denken Sie an die Attribute von Ihnen, die Sie veröffentlichen möchten, und rollen Sie diese als Substantiv mit einer Darstellung auf.

Diese Werte müssen nicht aus einer Datenbank stammen ... es handelt sich wahrscheinlich um eine Reihe von Zeichenfolgenwerten, und diese können aus der Konfiguration stammen oder sogar in einer Klasse fest codiert sein.

rauben
quelle