Was sind die Vorteile eines RESTful-Webdienstes?

8

Akademische Aufgabe… Zuerst wurde uns gesagt, wir sollten eine Reihe statischer .htmlDateien erstellen, die die Wahlergebnisse in verschiedenen Verwaltungsabteilungen zeigen. Dann wurde uns gesagt, wir sollten dies mithilfe von Django-Vorlagen "modernisieren". Fair genug, ich kann die Vorteile eines solchen Ansatzes sehen.

Aber dann wurde uns gesagt, wir sollten dies weiter "mordernisieren", indem wir die App "RESTful" machen. Soweit ich das beurteilen kann, bedeutet dies, dass der Server möglicherweise nur eine API verfügbar macht, die auf Anforderungen reagiert, indem er Client-Rohdaten im JSON-Format sendet. Der Client, bei dem es sich um eine statische HTML + CSS + JS-Site handelt, muss diesen JSON empfangen und dann die Webseite auf der Browserseite dynamisch mit JavaScript erstellen.

Kann mir jemand erklären, was die Vorteile eines solchen Ansatzes sind, da ich leider einige Vorträge verpasst habe, wenn dies erklärt worden sein muss? Weil ich sagen muss, dass ich nur Nachteile sehen kann:

  • Benutzer mit deaktiviertem JavaScript können die Seite nicht anzeigen.
  • Korrigieren Sie mich, wenn ich falsch liege, aber AFAIK kann den Inhalt einer solchen Website kaum von Google indizieren.
  • Es ist für Benutzer unmöglich, die Wahlergebnisse in einer bestimmten Abteilung mit einem Lesezeichen zu versehen. Stattdessen müssen sie sich jedes Mal, wenn sie die Seite besuchen, durchklicken, damit JavaScript die Ergebnisse dieser bestimmten Abteilung lädt. Oder setzen Sie einen Selenium-Bot ein, der dies für sie erledigt.
  • Es bricht Browser-Schaltflächen vor / zurück.
Gaazkam
quelle
Nur noch ein Punkt. Google rendert die Seite jetzt wie einen Browser, um Inhalte zu indizieren. Dynamische Inhalte von Ihrem REST-Service können also gecrawlt werden, wenn sie auf die Seite gelangen (zumindest von Google AFAIK). . Webseiten besser verstehen
Naresh Kumar

Antworten:

13

Technisch gesehen , ein Webserver, der HTML - Seiten dient ist RESTful. Text / HTML ist eine gültige, perfekt gültige Darstellung , solange der Medientyp gemäß der einheitlichen Oberfläche richtig eingestellt ist . Missbrauche einfach nicht deine Verben (GET, POST usw.) und folge HATEOAS (dh benutze im Wesentlichen eine vernünftige URL, die eine Ressource eindeutig identifiziert) und bam, es ist erholsam.

Ich denke, Ihr Professor fragt, dass Ihre Webseiten eine RESTful- API verwenden, die häufig json zurückgibt (aber auch hier jeden Medientyp zurückgeben kann, den der Client akzeptiert ).

Wie für Ihre Einwände:

Benutzer mit deaktiviertem JavaScript können die Seite nicht anzeigen.

Nun, sie werden keine dynamischen Inhalte erhalten können. Die Seite kann weiterhin statischen Inhalt enthalten.

Korrigieren Sie mich, wenn ich falsch liege, aber AFAIK kann den Inhalt einer solchen Website kaum von Google indizieren.

Der statische Inhalt, einschließlich der Meta-Tags, kann weiterhin problemlos gecrawlt werden.

Es ist für Benutzer unmöglich, die Wahlergebnisse in einer bestimmten Abteilung mit einem Lesezeichen zu versehen. Stattdessen müssen sie sich jedes Mal, wenn sie die Seite besuchen, durchklicken, damit JavaScript die Ergebnisse dieser bestimmten Abteilung lädt. Oder setzen Sie einen Selenium-Bot ein, der dies für sie erledigt. Es bricht Browser-Schaltflächen vor / zurück.

Nein, nein. Wenn Sie HATEOAS ordnungsgemäß folgen, sollte die URL alle Statusinformationen enthalten, die zum Rendern der Seite erforderlich sind. Wenn sie in der URL enthalten ist, kann sie mit einem Lesezeichen versehen werden.

John Wu
quelle
Danke, aber eines verstehe ich nicht. Wenn die URL alle Informationen enthält, sende ich eine Anfrage an den Server, um alle Wahlergebnisse für diese Verwaltungsabteilung zu erhalten. Wenn ich die Aufgabenspezifikation befolge, erhalte ich einen JSON… Nein, gemäß den Anforderungen. ich bin dieses JSON zu kriechen durch XMLHttpResponse, die sich nicht beeinflussen , was in der Browser - Adressleiste angezeigt wird.! Für jede Verwaltungsabteilung, in der ich die Wahlergebnisse ansehe, ist die mit einem Lesezeichen versehene URL dieselbe und verweist auf die Hauptseite.
Gaazkam
4
Wahr. Wenn Ihr Javascript dynamische Änderungen an der Seite vornimmt, wird die URL normalerweise nicht entsprechend aktualisiert. Sie können es jedoch anpassen, wenn Lesezeichen wichtig sind. Informationen dazu finden Sie unter pushState und replaceState und möglicherweise location.hash .
John Wu
1
Und tatsächlich, wenn Sie den Push-Status korrekt verwenden, wird Google auch den dynamischen Inhalt crawlen
Paul
2
+1 (insbesondere, um zu erwähnen, dass HTML-Antworten REST-fähig sein können), aber führen Googles Spinnen seit einiger Zeit kein JavaScript mehr aus?
RubberDuck
Entkopplung von Frontend und Backend mit einem Standard-Kommunikations-API-System.
Sgargel
0

Es ist eine subtile Unterscheidung, aber Sie wechseln von einer Webseite zu einer Webanwendung. Auf einer Webseite sind Server und Client eng miteinander verbunden. Sie können Informationen nur über die Webseite anzeigen.

Durch das Verschieben der Daten in einen RESTful-Webdienst werden die Ansicht (früher die Webseite) und das Modell (die Daten) vollständig entkoppelt und Ihre Optionen für die Interaktion mit den Daten erweitert.

PerryD
quelle
0

Eine REST-API stellt wie jede API die Ressourcen in einer maschinenlesbaren Schnittstelle zur Verfügung, die jeder Client verwenden kann.

Wenn Sie diese API zum Erstellen Ihrer Website verwenden, sind Sie eine von vielen Anwendungen, die denselben Dienst verwenden.

Vorteile des REST-Stils sind: - Verwenden Sie ein vorhandenes Protokoll (hier HTTP), um die Daten auszutauschen. - Sie verwenden definierte Medientypen, um Ressourcen auszutauschen.

Dies bedeutet, dass andere Entwickler vorhandenes Wissen und Tools verwenden können, um Ihre API zu verwenden.

Kwebble
quelle