В REST нет правила иерархии.
Действительно совершенно противоположное: это принцип REST, что URI непрозрачны, и поэтому URI <http://example.net/careers/technical/it/computing/programming/webProgramming/asp.net>
не передает больше информации с точки зрения REST, чем <http://example.net/fasd12>
.
Обратите внимание, что оба этих URI одинаково непрозрачны с точки зрения REST. Данный процесс (цифровая или человеческая мысль) может интерпретировать первый особый путь, но пока сервер не скажет иначе, что интерпретация не будет правильной (нет никакого способа узнать, глядя только на URI, что они оба идентифицируют веб-сайт сервис, чтобы помочь предсказать молочный выход стада коз).
Где иерархий приходят в это:
- Если сервер сообщил клиенту, как построить URI (например, HTML-формы, JavaScript будет выполняться на клиенте, или какой-либо другой формат, который описывает, как URI, построены).
- Если сервер использовал относительные URI для описания ссылок, как часть принципа HATEOAS.
В последнем, в частности, иерархии могут быть очень полезными.
И в этом случае, имеющие URI, которые имеют глубину 5, 6 или 14, полезны, если вы моделируете набор ресурсов, которые имеют иерархическое отношение друг к другу, которое имеет глубину 5, 6 или 14 уровней. И не иначе.
В данном случае это не нарушает принцип простоты:
..
как относительная URI очень прост, собирается ли он с 1-го уровня глубины до 0, или 43 уровней глубины до 42 .
./programming/
как относительная URI очень прост, собирается ли он от 0 уровней глубины до 1, или 42 уровней в глубине до 43.
- вне данного контекста, такие как, что относительные ссылки использовать все идентификаторы URI являются одинаково непрозрачны и, следовательно, одинаково просты: все это строки, которые можно сравнить для равенства w друг с другом, и ничего больше.
Edit:
С другой стороны, в то время как нет никаких оснований опасаться глубоких иерархий, нет никаких причин, чтобы чувствовать себя обязанным им тоже. Если вам более полезно иметь ресурс в /a/b/c
, включите в качестве составного ресурса один на /d
, тогда штраф. Также можно сделать и то, и другое: с /a/b/c/d
и /e
оба идентификатора одного и того же ресурса (с одним 301 другим будут приводить к улучшению поведения кэша и сделать связь явным).
Не могли бы вы привести пример такого глубоко вложенного URL-адреса? –
@LutzHorn Пример создания объекта обмена:/brand /: bid/campaign /: cid/product /: pid/exchange /: eid Я думаю, что было бы намного более привлекательным, если бы ресурс был доступен в/exchange –
@LutzHorn, если вы посмотрите на twitter Api, у них короткие URI –