Я работаю над созданием URL для моего API REST, прежде чем я начну писать любой код. Волшебство REST направляющих является фантастическим, но я немного побеспокоен форматирование URL, такого как:
http://myproject/projects/5
где Проект является моим ресурсом, и 5 project_id. Я думаю, надеется ли пользователь получать все их проекты, то соответствующий HTTP ДОБИРАЕТСЯ http://myproject/projects
имеет смысл. Однако, если они надеются получать информацию об исключительном ресурсе, таком как проект, затем имеет смысл иметь http://myproject/project/5
по сравнению с http://myproject/projects/5
. Лучше избежать этой головной боли, или некоторые из Вас разделяют подобное беспокойство, и еще лучше - имеют рабочее решение?
Rails (3) имеет множество соглашений, когда дело касается единственного и множественного числа. Например, классы моделей всегда имеют единственное число ( Person
), а соответствующие таблицы всегда имеют множественное число ( люди
). (Например, Person.all
отображается на select * from people
.)
Для маршрутов существует понятие единственного ресурса, а также множественного ресурса. Итак, если вы выбрали resource: account
, тогда вы получите такие пути, как / account
для пути по умолчанию или / account / edit
для пути к форме для редактирования. счет. (Обратите внимание, что Rails использует / account
с методом PUT
для фактического обновления учетной записи. / account / edit
- это форма для редактирования учетной записи, которая является отделите ресурс от самой учетной записи.) Однако если вы сделали resources: people
, то получили бы такие пути, как / people
, / people / 1
и / люди / 1 / редактировать
. Сами пути указывают, может ли быть только один экземпляр данного типа ресурса или может быть несколько экземпляров, различаемых некоторым типом идентификатора.
Согласен, плывите по течению. Рассмотрим, как URL-адрес образует иерархию.
Корень вашего веб-сайта - это то место, откуда вы начинаете получать доступ ко всему.
/ projects / сужает его до только проектов, и ничего больше. Из проектов вы можете делать множество вещей, / list, / index /, / export и т. Д. / Id еще больше ограничивает возможности.
С каждым / объем того, что нужно делать, сужается, и я думаю, что это имеет смысл.
Дальнейшее программирование основано на произвольных правилах. Индексы, начинающиеся с 1 против 0, и так далее. Любой, кто работает с вашими URL-адресами, быстро разберется со всем.