Рассмотрим следующую связь между двумя ресурсами
- В колледже много факультетов
- Преподаватель относится к колледжу
Очевидно, что факультет здесь не является первоклассным ресурсом.
Теперь мне нужны конечные точки для следующих операций.
- Create a new faculty in this college this farm. One possible way to do this in two operations.
POST /faculties/
PUT /college/1/faculties
- Remove a faculty from this college. Again two operations
GET /college/1/faculties
: List of associated faculties. Each will contain a self url like/faculties/1
.DELETE /college/1/faculties/1
: URL выглядит лучше, но как показать этот URL?
- Add one or more faculties under that college.
PUT /college/1/faculties
that accepts a complete list of faculties of this college.
- Delete that particular sector entirely.
DELETE /sectors/1
: Looks good but needs to take care of the cache of/faculties/1/sectors
.
Что было бы лучше в этом случае? Я читал об открытии ресурсов членства, но при таком подходе, если в колледже 10 факультетов, потребуется 10 отдельных http-вызовов, чтобы получить все из членства.
Более того, это всего лишь одна маленькая часть полного дерева отношений. Чтобы расширить это дальше, скажем, система имеет
- Факультет имеет много кафедр
- В отделе много лабораторий и так далее.
Кроме того, в архитектуре RESTful клиент никогда не должен заполнять URL-адреса.
Любое предложение?