Скажем, моя модель состоит из Parent
сущности, которая ссылается на некоторые Child
сущности через свойство children
. Сегмент пути URI определенного Child
, согласно принципам REST, будет /parent/{parentId}/children/{childId}
.
При выполнении операций обновления на Child
обычно childId
- это все, что мне нужно для уникальной идентификации правильного Child
, считая сегмент parentId
в пути избыточным. Эта избыточность усугубляется по мере усложнения иерархии.
Теперь, когда я думаю об этом, это также может вызвать неожиданное поведение: доступ к URI с одинаковыми childId
, но с разными parentId
может привести к тому же поведению, если программист не осознанный. Что должно произойти при доступе к Child
в несвязанном Parent
, так это то, что должен быть возвращен код ошибки клиента.
В настоящее время я думаю, что, возможно, не следует вводить иерархию в REST API, если она не является абсолютно интуитивно понятной, как это:
- Делает URI - таким образом, API - более сложным. Затвердевает ремонтопригодность.
- Из-за избыточности пользователи могут думать о результатах доступа к некоторым URI.
- Избыточность может стать ловушкой для неосведомленного программиста.
Есть ли способ избежать этой избыточности и при этом соответствовать принципам REST?