Sie finden den Entwurfsprozess schwierig, weil Sie versuchen, Ihre Website basierend auf einem URL-Bereich zu entwerfen, wenn Sie stattdessen Ihre Inhaltsdokumente entwerfen sollten.
Hier sind eine Reihe von Medientypen, die Ihre Anforderungen erfüllen.
Medientyp: application/vnd.yourcompany.collections + xml
<Collections>
<Widgets href="http://yoursite.com/{9BCCD309-644C-4fb8-A35E-A8B5E6AC4AE8}"/>
<Users href="http://yoursite.com/{BE57DC2D-8FE7-45e3-9362-AF5F607D62B6}"/>
</Collections>
Medientyp: application/vnd.yourcompany.Widgets + xml
<Widgets>
<Widget href="http://yoursite.com/{4A7B5583-5D09-4cf3-9781-1084977769C0}"/>
<Widget href="http://yoursite.com/{0D6A72E8-6088-462c-A97A-70BC43E25475}"/>
</Widgets>
Medientyp: 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>
Medientyp: application/vnd.yourcompany.Widget + xml
<Widget>
<Property1>99</Property1>
<Property2>A Description</Property2>
<UsersOfWidget href="http://yoursite.com/{26995C10-CA1D-4f1f-9065-2246A8426DA7}"/>
</Widget>
Medientyp: application/vnd.yourcompany.User + xml
<User>
<Name>Joe Smith</User>
<WidgetsOwnedByUser href="http://yoursite.com/{D718A2E6-6ADD-4d6e-A1E7-6DA68EDE0BD3}"/>
</User>
Offensichtlich dieser Satz von Medientypen ist nur eine von vielen möglichen Lösungen für Ihr Problem. Das Problem, auf das ich aufmerksam machen möchte, ist, dass die URL weitgehend irrelevant ist. Wie die Dokumente zusammenhängen, ist wichtig. Wenn Sie es auf diese Weise betrachten, ist es nicht schwierig, zwischen den Widgets, die von einem Benutzer verwendet werden, und den Benutzern, die ein Widget verwenden, zu unterscheiden.
Nun, wie Sie dies auf eine Reihe von Rails-Controller zuordnen, ist eine ganz andere Sache. Das Problem ist nicht, dass es schwierig ist, eine REST-konforme Lösung zu entwerfen, sondern es scheint, dass Rails nicht sehr natürlich zu mappen scheint. Nicht, dass ich viel Erfahrung mit Rails habe, also nimm das für das, was es wert ist. Ich glaube, dass Sie einen Controller pro Ressource haben sollten, und die Tatsache, dass Rails versucht, die Liste einer Ressource und die Ressource selbst in einen einzigen Controller zu pressen, ist ein Fehler. Kunden und Kunden sind meiner Meinung nach zwei verschiedene Ressourcen.
Bearbeiten: Möglicher Satz von URLs, die diese Ressourcen möglicherweise verknüpfen.
/Widgets
/Users
/Widget/1
/User/99
/Widget/1/UsersOfWidget
/User/99/WidgetsOwned
Ich würde einen Controller für jeden dieser Endpunkte erstellen.
Sie sollten wirklich auf Darrel Miller's Antworten hören - URI Formatierung hat nichts mit REST zu tun. Sie sollten sich vielleicht auch einige REST-Themen zu StackOverflow ansehen, die es ausführlicher erklären, oder sich Fieldings Dissertation ansehen. – aehlke
Meine Frage ging nicht um hübsche URLs - es ging darum, welchen Rails-Controller ich für die Anfrage verwenden würde und welche Aktion verwendet werden würde. –