Каковы лучшие практики для вложенных ресурсов REST?

Насколько я могу сказать, каждый отдельный ресурс должен иметьтолько один канонический дорожка. Итак, в следующем примере, какими будут хорошие шаблоны URL?

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

Отделне может существовать без ассоциированной компании.

Сотрудникне может существовать без связанного отдела.

Теперь я нашел бы естественное представление шаблонов ресурсов.

/companies Коллекция компаний - Принимает ставку для новой компании. Получить за всю коллекцию./companies/{companyId} Индивидуальная компания. Принимает GET, PUT и DELETE/companies/{companyId}/departments Принимает POST для нового элемента. (Создает отдел внутри компании.)/companies/{companyId}/departments/{departmentId}//companies/{companyId}/departments/{departmentId}/employees/companies/{companyId}/departments/{departmentId}/employees/{empId}

Учитывая ограничения, в каждом из разделов я чувствую, что это имеет смысл, если немного глубоко вложен.

Тем не менее, моя трудность приходит, если я хочу перечислить (GET) все сотрудники во всех компаниях.

Шаблон ресурсов для этого наиболее точно соответствует/employees (Сбор всех сотрудников)

Означает ли это, что я должен иметь/employees/{empId} также потому, что если так, то есть два URI для получения одного и того же ресурса?

Или, может быть, вся схема должна быть сведена, но это будет означать, что сотрудники являются вложенным объектом верхнего уровня.

На базовом уровне/employees/?company={companyId}&department={deptId} возвращает точно такое же представление о сотрудниках, как наиболее глубоко вложенный шаблон.

Какова наилучшая практика для шаблонов URL, где ресурсынаходящийся в собственности другими ресурсами, но должны быть возможность запроса отдельно?

ОБНОВИТЬ: Смотрите мой ответ ниже, чтобы увидеть, что я сделал.

Ответы на вопрос(6)

Ваш ответ на вопрос