Каковы лучшие практики для вложенных ресурсов 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 's, чтобы получить тот же ресурс?

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

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

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

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

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

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