Je ne me repose pas avec Ruby sur des rails, et j'espère que quelqu'un ici peut me mettre droit.
Imaginez que je construisais un site qui contient une trace des widgets et des utilisateurs qui possèdent ces widgets. Je disposerais donc d'utiliser des utilisateursController et une widgetsController, et je pourrais obtenir une liste de widgets ou d'utilisateurs avec les actions d'index: p> et je pourrais obtenir un utilisateur ou un widget spécifique Avec les actions de spectacle: P> GET /users/id
GET /widgets/id
3 Réponses :
Vous trouvez difficile le processus de conception, car vous essayez de concevoir votre site basé sur un espace URL lorsque vous devez concevoir votre document de contenu.
Voici un ensemble squelette de types de média qui répondraient à vos besoins.
Type de support: Application / VND.YourCompany.collections + XML P>
/Widgets /Users /Widget/1 /User/99 /Widget/1/UsersOfWidget /User/99/WidgetsOwned
Merci pour votre réponse, mais j'ai NFI de quoi vous parlez. Vous ne semblez même pas mentionner les widgets appartenant à des utilisateurs? Je cherchais une réponse comme "Vous devez créer une action personnalisée sur votre contrôleur" ou "Vous devez utiliser l'action d'index sur votre contrôleur widgets et faire xyz.".
:-) J'ai changé le nom de certains des éléments des deux derniers documents pour tenter de clarifier. Une convention que j'utilise dans des documents XML renvoyées à partir d'interfaces reposantes est que si un élément a une HREF, je peux suivre ce lien pour récupérer une représentation complète de cette ressource. Désolé, je ne me suis pas réalisé que c'était peu clair. Je suppose que j'ai passé trop de temps à regarder des documents comme celui-ci.
Je savais que tu cherchais un "Comment ça marche dans des rails" mais ce que j'essaie d'obtenir à cause de la pensée en termes d'URL et d'actions sur les contrôleurs va le rendre vraiment difficile lorsque vous touchez les problèmes plus difficiles dans la conception d'interfaces reposantes. Je vais vous montrer les URL que j'utiliserais pour modéliser ce problème, à partir de celui-ci, il peut être évident comment le faire dans des rails.
Un autre problème avec les rails «routage reposant» est qu'il semble pouvoir nier des URI de différentes manières, même s'ils sortent à la même ressource - une violation du repos.
Au lieu de "/ widget / 1 / usernersofwidget" ne serait pas "/ utilisateurs? Widget = 1" éventuellement être plus approprié? Utilise les mêmes URI / utilisateur URI pour un sous-ensemble de la même ressource.
@Wahnfrieden Ouais, à l'aide d'un paramètre de requête serait probablement plus clair. Mais comme si nous continuions à dire, cela n'a pas d'importance si vos types de médias sont correctement faits :-)
La représentation de l'URI n'a pas d'importance (ce qui ne violera pas la norme utilisée, HTTP dans ce cas), mais si je vous rappelle correctement, vous ne devez avoir qu'un seul URI par vision de la ressource, qui s'applique ici car c'est juste un sous-ensemble et pas un type de média différent.
Je pense que le mot clé il y a eu. Je ne crois pas que ce soit un must. Je me souviens qu'il s'agissait d'un sujet discuté chaudement ;-)
L'URL de la liste des widgets appartenant à un utilisateur Vous avez le choix de faire vos urls pour chacun de ces widgets. Ceci est possible: p> mais je préfère ceci: p> Votre itinéraire ressemblerait à ceci: p> foo code> ressemblerait à ceci: map.resources :users, :has_many => :widgets, :shallow => true
map.resources :widgets, :has_many => :users, :shallow => true
Ah ça a beaucoup de sens. Je n'étais pas au courant de l'option superficielle de Map.Resources. Merci!
Spot sur, mais la relation ici est "has_and_belongs_to_many" puisqu'un utilisateur peut avoir de nombreux widgets et qu'un widget peut appartenir à de nombreux utilisateurs.
Vous auriez probablement pair de has_many et has_many: par des relations avec quelque chose comme un userwidget code> (nom boiteux) au lieu d'un habtm code> J'aurais pensé.
En fait, j'avais l'intention d'un utilisateur: HAS_MANY widgets et un widget: appartient à un utilisateur.
Les jolies Uris n'ont rien à voir avec le repos.
@Wahnfrieden - et ma question n'était pas sur de jolies URL, il s'agissait de contrôleurs et d'actions.
Je pense que Darrel essaie de vous renseigner au repos en général, comme il dit que trop se soucier de la conception de l'URL pourrait être un signe que vous ne concevez pas vraiment de manière reposante. Par exemple, comme indique Darrel, votre représentation utilisateur pourrait transporter les liens vers les widgets qu'il possède (ou un lien vers une URL qui effectue une recherche de ces widgets propres par l'utilisateur). P>
Vous devriez vraiment écouter les réponses de Darrel Miller - le formatage URI n'a rien à voir avec le repos. Vous devriez également consulter des sujets de repos sur Stackoverflow qui l'expliquent plus en détail ou regardez la thèse de Fielding.
Ma question n'était pas sur de jolies URL - il s'agissait de quelles rails contrôleur je voudrais utiliser pour gérer la demande et quelles actions seraient utilisées.