Bạn đang tìm quá trình thiết kế khó khăn vì bạn đang cố gắng thiết kế trang web của mình dựa trên không gian URL khi bạn nên thiết kế tài liệu nội dung thay thế.
Dưới đây là tập hợp các loại phương tiện truyền thông sẽ giải quyết các yêu cầu của bạn.
Media Type: 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>
Media Type: 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>
Media Type: application/vnd.yourcompany Người dùng + xml
<Users>
<User href="http://yoursite.com/{6321D95E-7EDB-46b8-9430-AB57EA067B06}"/>
<User href="http://yoursite.com/{0D6A72E8-6088-462c-A97A-70BC43E25475}"/>
</Users>
Loại phương tiện: application/vnd.yourcompany.Widget + xml
<Widget>
<Property1>99</Property1>
<Property2>A Description</Property2>
<UsersOfWidget href="http://yoursite.com/{26995C10-CA1D-4f1f-9065-2246A8426DA7}"/>
</Widget>
Media Type: application/vnd.yourcompany.User + xml
<User>
<Name>Joe Smith</User>
<WidgetsOwnedByUser href="http://yoursite.com/{D718A2E6-6ADD-4d6e-A1E7-6DA68EDE0BD3}"/>
</User>
Rõ ràng này tập hợp các loại phương tiện truyền thông chỉ là một trong nhiều giải pháp tiềm năng cho vấn đề của bạn. Vấn đề tôi muốn thu hút sự chú ý của bạn là URL hầu như không liên quan. Làm thế nào các tài liệu liên quan đến nhau là quan trọng. Khi bạn nhìn vào nó theo cách này, không khó để phân biệt giữa các Widget được sử dụng bởi một người dùng và những người dùng sử dụng một Widget.
Bây giờ, cách bạn ánh xạ điều này với một bộ điều khiển Rails là một vấn đề khác. Vấn đề không phải là rất khó để thiết kế một giải pháp RESTful, nó chỉ là Rails dường như không bản đồ rất tự nhiên. Không phải là tôi có nhiều kinh nghiệm với Rails, vì vậy hãy coi đó là điều đáng giá. Tôi tin rằng bạn nên có một bộ điều khiển cho mỗi tài nguyên và thực tế là Rails cố gắng ép danh sách tài nguyên và tài nguyên chính nó vào một bộ điều khiển đơn là một sai lầm. Khách hàng và khách hàng là hai nguồn tài nguyên khác nhau theo ý kiến của tôi.
Chỉnh sửa: Tập hợp các Url có thể có thể liên kết các tài nguyên này.
/Widgets
/Users
/Widget/1
/User/99
/Widget/1/UsersOfWidget
/User/99/WidgetsOwned
Tôi sẽ tạo bộ điều khiển cho từng điểm cuối này.
Bạn thực sự nên nghe câu trả lời của Darrel Miller - Định dạng URI không liên quan gì đến REST. Bạn cũng nên xem xét một số chủ đề REST trên StackOverflow giải thích chi tiết hơn, hoặc xem xét luận án của Fielding. – aehlke
Câu hỏi của tôi không phải về các URL đẹp - đó là về trình điều khiển Rails tôi sẽ sử dụng để xử lý yêu cầu và hành động nào sẽ được sử dụng. –