Vous trouvez le processus de conception difficile car vous essayez de concevoir votre site en fonction d'un espace URL lorsque vous devez concevoir vos documents de contenu à la place.
Voici un ensemble de types de supports squelettiques répondant à vos besoins.
Type de support: application/xml vnd.yourcompany.collections +
<Collections>
<Widgets href="http://yoursite.com/{9BCCD309-644C-4fb8-A35E-A8B5E6AC4AE8}"/>
<Users href="http://yoursite.com/{BE57DC2D-8FE7-45e3-9362-AF5F607D62B6}"/>
</Collections>
Type de support: application/xml vnd.yourcompany.Widgets +
<Widgets>
<Widget href="http://yoursite.com/{4A7B5583-5D09-4cf3-9781-1084977769C0}"/>
<Widget href="http://yoursite.com/{0D6A72E8-6088-462c-A97A-70BC43E25475}"/>
</Widgets>
Type de support: application/vnd.yourcompany .Users + xml
<Users>
<User href="http://yoursite.com/{6321D95E-7EDB-46b8-9430-AB57EA067B06}"/>
<User href="http://yoursite.com/{0D6A72E8-6088-462c-A97A-70BC43E25475}"/>
</Users>
type de support: application/xml vnd.yourcompany.Widget +
<Widget>
<Property1>99</Property1>
<Property2>A Description</Property2>
<UsersOfWidget href="http://yoursite.com/{26995C10-CA1D-4f1f-9065-2246A8426DA7}"/>
</Widget>
Type de support: application/xml vnd.yourcompany.User +
<User>
<Name>Joe Smith</User>
<WidgetsOwnedByUser href="http://yoursite.com/{D718A2E6-6ADD-4d6e-A1E7-6DA68EDE0BD3}"/>
</User>
Il est évident que cet ensemble de types de médias est une des nombreuses solutions possibles à votre problème. Le problème sur lequel je veux attirer votre attention est que l'URL est en grande partie non pertinente. La manière dont les documents interagissent est importante. Lorsque vous regardez de cette façon, il n'est pas difficile de faire la distinction entre les widgets utilisés par un utilisateur et les utilisateurs qui utilisent un widget.
Maintenant, comment vous mapper cela à un ensemble de contrôleurs Rails est un tout autre problème. Le problème n'est pas qu'il est difficile de concevoir une solution RESTful, c'est juste que Rails ne semble pas cartographier très naturellement. Pas que j'ai beaucoup d'expérience avec Rails, alors prends ça pour ce que ça vaut. Je crois que vous devriez avoir un contrôleur par ressource et le fait que Rails essaye de serrer la liste d'une ressource et la ressource elle-même dans un contrôleur simple est une erreur. Les clients et le client sont deux ressources différentes à mon avis.
Édition: Ensemble possible d'URL pouvant lier ces ressources.
/Widgets
/Users
/Widget/1
/User/99
/Widget/1/UsersOfWidget
/User/99/WidgetsOwned
Je créer un contrôleur pour chacun de ces points de terminaison.
Vous devriez vraiment écouter les réponses de Darrel Miller - le formatage de l'URI n'a rien à voir avec REST. Vous devriez peut-être aussi regarder quelques sujets REST sur StackOverflow qui l'expliquent plus en détail, ou regarder la thèse de Fielding. – aehlke
Ma question ne portait pas sur les jolies URL - il s'agissait du contrôleur Rails que j'utiliserais pour gérer la requête, et quelle action serait utilisée. –