Каковы лучшие практики для вложенных ресурсов 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, где ресурсынаходящийся в собственности другими ресурсами, но должны быть возможность запроса отдельно?
ОБНОВИТЬ: Смотрите мой ответ ниже, чтобы увидеть, что я сделал.