2016-09-19 2 views
1

Lieu: Cette question est plus comme "est-ce la bonne approche?" plutôt que "comment je fais ça?"Templating JSON à partir de résultats REST

Situation: J'ai créé une application REST CherryPy suivant this tutoriel. Les données sont renvoyées en utilisant le module json avec un simple json.dumps. Cet exemple fonctionne. J'ai un template mako que je voudrais utiliser pour créer un tableau HTML avec les données. Encore une fois, le modèle en lui-même fonctionne.

La question: Dans ma tête, il fonctionne de cette façon:

  1. L'utilisateur demande une URL
  2. L'API REST crée le JSON avec les résultats
  3. Le modèle mako produit la HTML donné les résultats
  4. le code HTML est renvoyé à l'utilisateur

Mon le problème est, je ne suis pas sûr que ce soit la bonne approche: dans ma (petite) expérience, le JSON devrait être retourné au client, qui devrait le rendre d'une certaine manière (en utilisant jQuery ou un autre langage client); à la place, le modèle mako fonctionne sur le serveur, et c'est là que je me suis retrouvé bloqué.

Avez-vous un conseil?

+1

Demandez-vous: pourquoi implémentez-vous REST? Est-ce une architecture de microservice? Si oui, il est normal que votre application générant un frontal à partir de modèles demande à votre API les données de contexte via HTTP au format JSON. Si non, pourquoi ne transmettez-vous pas tous les params au moteur de rendu? – webKnjaZ

Répondre

0

Vous n'avez pas besoin de REST pour résoudre ce problème, il s'agit d'une application Web normale. Juste pour vous montrer comment cela fonctionne par un service REST:

  • L'utilisateur demande au client REST faire some-automated-stuff sur le service
  • Le client demande example.com/api/v1 pour obtenir la page principale
  • Le client cherche des hyperliens sur la page principale
  • le client trouve lien avec relation=some-automated-stuff
  • le client suit ce lien hypertexte et obtient un résultat JSON de l'API REST
  • le c LIENT utilise le modèle de Mako et produit le code HTML donné les résultats
  • Le code HTML est renvoyé à l'utilisateur

Un client typique est une application côté serveur 3ème partie, qui est enregistré par le service et a obtenu une API unique, clé. Les utilisateurs permettent aux clients de faire some-automated-stuff sur leur compte en donnant des autorisations aux clés API. Ainsi, par exemple, le service peut être l'API facebook et un client peut être une application développée par Zynga e.g. Farmville. Lorsque vous autorisez le client à publier sur votre flux de nouvelles que vous venez de récolter 100 000 récoltes sur votre ferme, il envoie une demande à ce sujet à l'API facebook et un message automatisé s'affiche dans votre flux d'actualités.

Ofc. vous pouvez écrire un client côté serveur AJAX ou côté serveur si vous le souhaitez, mais si vous ne voulez pas prendre en charge les clients tiers, cela n'a pas beaucoup de sens de développer un service REST. Ofc. votre client ne se cassera pas aussi facilement que par des applications régulières, donc cela pourrait en valoir la peine si cela est important.