В моем Rails-приложении у меня довольно стандартные отношения has_many между двумя сущностями. A Foo
имеет ноль или более Bars
; Bar
принадлежит ровно одному Foo
. И Foo, и Bar идентифицируются одним целочисленным значением ID. Эти значения уникальны для всех соответствующих экземпляров.
Бар зависит от существования Foo: нет смысла иметь Бар без Foo.
Есть два способа RESTful ссылки на экземпляры этих классов. Если Foo.id равен 100 и Bar.id равен 200:
Ссылка на каждый Foo и Bar через их собственные маршруты "верхнего уровня" URL, например:
Панель ссылок как вложенный ресурс через его экземпляр Foo:
- / Foo / 100
- / Foo / 100 / бар / 200
Мне нравятся вложенные маршруты в # 2, так как они более точно представляют фактические отношения зависимости между объектами. Тем не менее, это, кажется, требует много дополнительной работы за очень небольшой выигрыш. Предполагая, что я знаю о конкретном баре, мне не нужно говорить о конкретном Foo; Я могу извлечь это из самого бара. Фактически, я, вероятно, должен проверять маршрутизируемый Foo везде, куда бы я ни пошел (чтобы вы не могли сделать / foo / 150 / bar / 200, предполагая, что Bar 200 не назначен для Foo 150). В конечном счете, я не вижу, что это приносит мне.
Итак, есть ли другие аргументы за или против этих двух схем маршрутизации?
Точка выяснения
Меня больше всего интересуют обновления / шоу / удаления RESTful для определенных баров. Для получения списка Bars для определенного Foo (который обычно является действием index в Rails) имеет смысл иметь вложенный маршрут, такой как / foo / 100 / bar. Страница на этом маршруте может так же легко ссылаться на / bar / x, как и / foo / 100 / bar / x.