2016-09-19 5 views
1

Prämisse: Diese Frage ist eher wie "ist das der richtige Ansatz?" eher als "wie mache ich das?"Templating JSON aus REST-Ergebnissen

Situation: Ich habe eine CherryPy REST-Anwendung nach this Tutorial erstellt. Die Daten werden unter Verwendung des json Moduls mit einem einfachen zurückgegeben. Dieses Beispiel funktioniert. Ich habe eine Mako-Vorlage, die ich verwenden möchte, um eine HTML-Tabelle mit den Daten zu erstellen. Auch hier funktioniert die Vorlage selbst.

Die Frage: In meinem Kopf, es so funktioniert:

  1. Der Benutzer für eine
  2. URL fragt
  3. Die REST-API
  4. Die mako Vorlage erzeugt das JSON mit den Ergebnissen erstellt der HTML In Anbetracht der Ergebnisse
  5. die HTML an den Benutzer zurückgegeben wird

Meine Problem ist, ich bin mir nicht sicher, ob dies der richtige Ansatz ist: In meiner (kleinen) Erfahrung sollte der JSON an den Client zurückgegeben werden, der ihn auf irgendeine Weise rendern sollte (mit jQuery oder einer anderen clientseitigen Sprache); Stattdessen funktioniert die Mako-Vorlage auf der Serverseite, und das ist, wo ich stecken geblieben bin.

Haben Sie einen Tipp?

+1

Fragen Sie sich: Warum implementieren Sie REST überhaupt? Ist es eine Microservice-Architektur? Wenn ja, ist es normal, dass Ihre App, die Front-End aus Vorlagen generiert, Ihre API nach den Kontextdaten über HTTP im JSON-Format fragt. Wenn nicht, warum gibst du nicht einfach alle Parameter an den Renderer? – webKnjaZ

Antwort

0

Sie benötigen keine REST-Lösung, dies ist eine normale Webanwendung. Nur um Sie zu zeigen, wie dies durch einen REST-Dienst funktioniert:

  • Der Benutzer fragt das REST-Client some-automated-stuff auf dem Dienst
  • Der Kunde example.com/api/v1 die Hauptseite
  • Der Client für Hyperlinks schaut bekommen Anfragen zu tun auf der Hauptseite
  • der Kunde findet Hyperlink mit relation=some-automated-stuff
  • die Client, Hyperlink folgt und bekommt ein JSON Ergebnis aus dem REST API
  • die C lient verwendet die mako Vorlage und erzeugt den HTML angesichts der Ergebnisse
  • Die HTML an den Benutzer zurückgegeben wird

Ein typischer Kunde ist ein 3rd-Party-Server-Seite-Anwendung, die von dem Dienst registriert ist, und hat einen einzigartigen API Schlüssel. Die Benutzer erlauben den Clients, some-automated-stuff auf ihrem Konto auszuführen, indem sie Berechtigungen für API-Schlüssel erteilen. So kann beispielsweise der Dienst die Facebook-API sein, und ein Client kann eine von Zynga entwickelte Anwendung sein, z. Farmville. Wenn Sie dem Kunden erlauben, in Ihrem Newsfeed zu posten, dass Sie gerade 100000 Ernten in Ihrer Farm geerntet haben, sendet er eine Anfrage darüber an die Facebook-API und so werden einige automatisierte Nachrichten in Ihrem News-Feed angezeigt.

Ofc. Sie können einen AJAX-Client der ersten Partei oder einen Server-seitigen Client schreiben, wenn Sie möchten. Wenn Sie jedoch keine Drittanbieter-Clients unterstützen möchten, ist es nicht sinnvoll, einen REST-Dienst zu entwickeln. Ofc. Ihr Kunde wird nicht so leicht brechen wie bei normalen Anwendungen, es lohnt sich also, wenn das wichtig ist.