Ресурс, отображающийся в URL Ruby on Rails (УСПОКОИТЕЛЬНЫЙ API)

Я испытываю немного затруднений, придумывающих правильный ответ на это, таким образом, я буду требовать своей проблемы здесь. Я работаю над УСПОКОИТЕЛЬНЫМ API. Естественно, у меня есть несколько ресурсов, некоторые из которых состоят из родителя к дочерним отношениям, некоторые из которых являются одинокими ресурсами. То, где я испытываю немного затруднений, выясняет, как сделать вещи легче для людей, которые будут создавать клиенты против моего API.

Ситуация - это. Гипотетически у меня есть 'уличный' ресурс. Каждая улица имеет несколько домов. Так улица: has_many в Дома и Дома: улица belongs_to. Если пользователь хочет запросить, чтобы HTTP Вошел в определенный домашний ресурс, следующее должно работать:

http://mymap/streets/5/homes/10

Это позволяет пользователю получать информацию для дома с идентификатором 10. Прямой. Мой вопрос, я нарушающий правила книги путем предоставления пользовательского доступа к:

http://mymap/homes/10

Технически тот домашний ресурс существует самостоятельно без улицы. Это имеет смысл, что это существует как свой собственный объект без улицы инкапсуляции, даже при том, что бизнес-логика говорит иначе.

Что лучший способ состоит в том, чтобы обработать это?

Править! В духе становления хорошим гражданином StackOverflow я возвратился с поддерживаемым блоком кода для того, как реализовать их выше.

map.resources :streets,
              :has_many => :homes
              :shallow => true

Это создаст оба типа маршрутов, которые я искал.

6
задан randombits 11 April 2010 в 00:41
поделиться

3 ответа

Если записи о вашем доме могут принадлежать только одной улице, то при индивидуальном изучении дома не возникнет путаницы. Вы по-прежнему сможете вернуться к связанной записи Street по любой причине.

Именно в ситуациях, когда у вас есть отношения «многие ко многим», деактивация структуры REST может вызвать у вас проблемы. Если конкретная запись имеет смысл только в определенном контексте, и вы удалите этот контекст, очевидно, есть путаница.

Я думаю, что в вашем конкретном случае вам может не понадобиться реализовывать оба подхода, вместо этого используйте более «плоский» подход, который снижает сложность URL-адреса.

5
ответ дан 17 December 2019 в 04:44
поделиться

Нет, именно так работают и часто используются неглубокие маршруты.

0
ответ дан 17 December 2019 в 04:44
поделиться

Мне очень нравится этот подход. Рекомендую прочитать. Вкратце, в этой статье говорится, что вы не должны вкладывать свои ресурсы более чем на 1 уровень. И если возможно, что вложенный ресурс можно обмелеть, то сделайте это.

В одном из своих приложений я действительно напортачил с вложенными ресурсами. Я погружаюсь даже в 3 или 4 глубины, и это становится кошмаром ...

Вложенность действительно хороша, если она упрощает работу. Если нет, брось!

0
ответ дан 17 December 2019 в 04:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: