Bravo Jean-Baptiste, c’est le genre de clarification dont il y a grand
besoin en ce moment où beaucoup de gens (même en dehors de Rails)
tatonnent
autour de REST.
Le problème de Restful c’est sa nature lumineusement simple, mais dont
la
mise en pratique découvre beaucoup de non-dit.
CRUD = REST est une simplification utile dans la démarche de
compréhension
mais on n’arrive a rient avant de la dépasser.
Il peut être utile de prendre de la hauteur par rapport à notre petit
monde
de codeurs et d’assayer d’envisager ce pattern sous d’autre éclairages :
Ceux qui, lorsqu’ils ne codent pas, font de la musique ou bien écrivent
des
vers (ou peignent ou cuisinent savent qu’on fait de belles choses
lorsqu’on a assimilé des règles rigides et qu’on a découvert comment
tricher
utilement.
L’avantage de la règle d’apparence naïve est qu’elle permet facilement
de ne
pas trop s’égarer et d’éviter la tentation de réinventer trop de roues.
Mais comme elle est toute simple, ses limites sont également faciles Ã
percevoir (CRUD et après je fais quoi ? Mais rien. Rien du tout !).
Ainsi on
se rend assez vite compte lorsqu’il faut vraiment s’aventurer en dehors
du
cadre. La solution n’est pas subtilement cachée dans une API absconce,
il
faut aller la trouver, c’est aussi simple que ça.
Ca donne quoi alors en REST ?
Mon expérience,c’est qu’on s’accroche d’abord le plus possible à la
logique
CRUD, avec la plupart du temps des ressources imbriquées sur DEUX
niveaux
seulement. Ca permet déjà pas mal de choses pour tout ce qui est de
nature
hiérachique.
Et quand ça coince, on commence à abatardir le modèle en s’éloignant du
REST
pur pour flirter un peu avec un style RPC (i.e. d’autres méthodes que
les 7
méthodes sacrées
Et, comme le souligne Jean-Baptiste, l’API REST de notre appli n’a pas Ã
se
calquer servilement sur les modèles Rails (SGDB).
Une relation entre deux ressources peut très bien être de nature
belongs_to/has_many vue de l’exterieur et n’avoir aucun rapport avec ce
qui
se passe, dans l’appli, au niveau des modèles.
L’énoooorme avantage de coller, tant que faire se peut, au modèle idéal
c’est que, a mesure que ça devient une seconde nature, tous les autres
aspects de l’appli sont naturellement conçus en pensant Restful et d’un
coup
tout s’enclique.
Par Exemple, j’avais besoin d’une mécanique de Breadcrumbs souple et
robuste
pour la navigabilité de mon site qui présente beaucoup de cheminements
possibles. Et bien, ça s’emboite à merveille avec Restful !
(publication du code à la rentrée).
Dernière pensé donc, avant de coucher le pingouin jusqu’à l’année
prochaise
: REST = CRUD est la règle, il faut apprendre à ne PAS la respecter
So you want to write a fu-u-gue ?
Bonne fêtes à ceux qui s’attardent encore ici
Philippe.
–
Web development is coming of age with Ruby on Rails
blog.lachaise.org