Appliquer un design RESTful à un site Web entier?

11

Tout cela peut sembler très nouveau, mais j'essaie de me concentrer sur la conception d'un site Web qui est complètement RESTful. Je comprends l'application du design RESTful à des choses comme les utilisateurs, les photos, les articles de blog, etc. parce que je les considère comme des "objets".

Mais qu'en est-il d'une page "à propos de nous". De quel type de ressource s'agit-il? Est-ce même une ressource au sens RESTful du terme? Par ailleurs, disons que je vais à l'URL "http://www.example.com/", quelle ressource est-ce que je demande? La ressource d'index?

TaylorOtwell
la source
Je pense que des éclaircissements sont nécessaires. Quel est votre objectif final. Quel est le besoin d'un design reposant. en prenant repos de l'équation, quel besoin essayez-vous de satisfaire?
Jonathan Kaufman
1
L'objectif final est un site Web complet. Structurer un site Web autour d'un design reposant semble logique en fonction du fonctionnement du Web. Je ne sais tout simplement pas comment appliquer ce type de conception à des choses qui ne semblent pas être des ressources, comme une page de contact ou à propos.
TaylorOtwell

Réponses:

6

Le modèle de ressource de site Web RESTful le plus courant que je vois consiste à ajouter une vue à l'URI:

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

Lorsqu'il n'y a pas de vue , vous diffusez simplement une vue par défaut. Dans ton cas:

  • / - une demande de example.comretourne la vue par défaut de la ressource de niveau supérieur - votre site Web.
  • / aboutus - la vue "À propos de nous" de la ressource de niveau supérieur. Ou, alternativement, aboutuspourrait être un identifiant nommé pour une ressource dans la portée du CMS de niveau supérieur. *
  • / customers / 1 / aboutus - cette demande indiquerait une vue "À propos de nous" étendue au client 1 .

Cela étant dit, il est parfois préférable de truquer un peu pour une meilleure sémantique. Par exemple, StackOverflow utilise RESTful / questions / [id] pour les questions, mais la page Poser une question est / questions / ask qui n'est pas très RESTful ( askn'est pas une questionsressource) mais a beaucoup de sens pour utiliser de simples mortels.


* Dans les CMS au niveau supérieur, le type de ressource est souvent, mais pas toujours, supprimé car il est redondant.

Nicole
la source
10

Gardez à l'esprit que la conception RESTful en soi est destinée à fournir une norme par laquelle le Web devient uniformément programmable. Il n'est pas toujours approprié ou utile de transformer tout votre site Web humain en une sémantique REST pure.

Lorsque vous avez des ressources, considérer leurs représentations est utile. Il est également important de prendre en compte les autres principes de conception de REST, tels que les statelessnes, et leur impact sur les performances et la convivialité de votre site Web. Mais rappelez-vous que REST est un outil, pas un objectif. C'est un moyen, pas une fin.

Utilisez la sémantique RESTful lorsque cela est utile , après avoir compris leur objectif et leurs avantages, et ne transpirez pas si votre site n'est pas parfaitement RESTful. Ce serait presque impossible pour n'importe quel site non trivial de toute façon.

TL; DR : REST est un outil. Utilisez-le quand et où cela est utile, mais ne vous y limitez pas.

Rein Henrichs
la source
2
+1 Il y a plus à se reposer que les URL.
Josh Noe
Ajax, REST et les liens externes vers votre site REST peuvent être un cauchemar. Merci pour votre réponse.
johnny
4

Mais, qu'en est-il d'une page «à propos de nous» [?] De quel type de ressource s'agit-il?

Complexe. Rien de mal avec une ressource qui a des composants, des morceaux ou une structure.

Les ressources ne sont pas des «lignes de base de données relationnelles» ou d'autres éléments atomiques. Ce sont des ressources.

Les bases de données orientées document gèrent cela plus facilement car une ressource peut être plus grande et plus structurée.

Est-ce même une ressource au sens RESTful du terme?

Oui.

Par ailleurs, disons que je vais à l'URL "http://www.example.com/", quelle ressource est-ce que je demande?

Non.

Vous demandez la ressource "aboutus". Il est possible (mais étrange) qu'une ressource soit un singleton. Pas d'ID et pas de "liste".

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

Renvoie un document XML complexe avec beaucoup de morceaux et de pièces. Aucun problème avec cela.

La ressource d'index?

Cela ne signifie pas grand-chose dans un sens "reposant". La page "index" est destinée aux personnes. Une application qui utilise une API RESTful est conçue pour demander des types spécifiques de ressources.

S.Lott
la source
4
+1 J'aimerais souligner un point important de votre réponse: REST est un paradigme programmable; il n'est pas nécessairement destiné à la consommation humaine.
Rein Henrichs
1

Je garderais mon opinion indépendante du back-end. Vous pouvez demander au back-end des ressources telles que des choses qui vont sur l'accordéon, la barre de navigation et d'autres objets qui se rapportent au corps. Cependant, vous devez laisser le traitement de ces représentations de ressources à votre code client, qui les rendra éventuellement selon les exigences.

SPI
la source
1

La ressource pour "About Us" est ... Us :) euh, vous. Pensez aux attributs de vous que vous souhaitez faire connaître et enroulez-les comme un nom avec une représentation.

Ces valeurs ne doivent pas provenir d'une base de données ... ce sera probablement un tas de valeurs de chaîne, et celles-ci peuvent provenir de config, ou peut-être même codées en dur dans une classe.

Rob
la source