Как сделать патч с ng-ресурсом при работе с агрегированной конечной точкой REST
У меня есть довольно простая модель CRUD для моего REST. Моя проблема заключается в том, как обрабатывать PATCH или PUT, когда я агрегирую для повышения производительности и поддержания общей бизнес-логики на стороне сервера.
Допустим, у меня есть компания и отделы. Вот конечные точки CRUD
GET /companies // list all companies
GET /companies/25 // GET company with ID 25
GET /departments // list all departments
GET /departments/65 // GET department with ID 65
Раньше клиент GET /companies/25
который возвращается
{id:"25",name:"my firm",departments:["65","72","10]}
тогда он будет делать отдельные звонки для отделов. (да, я мог бы использовать гиперссылки в ответе, но это простой пример)
Теперь я хочу создать конечную точку агрегации, так что это один вызов. GET /companies/25
вернусь
{id:"25",name:"my firm",departments:[
{id:"65", name:"Marketing"},
{id:"72", name:"Sales"},
{id:"10", name:"R&D"},
]}
(реальная ситуация намного сложнее)
Проблема в том, что это становится единым $resource
, Если я захочу PUT
или же PATCH
что бы ни изменилось, это может послать много информации, так как ng-resource
не понимает, что просто id
а также name
являются частью отдела "25"
и должны быть отправлены, а остальные были предоставлены для удобства.
Как я использую PATCH
/PUT
с ng-resource
когда конечная точка агрегируется?
И наоборот, если у меня есть отдельный URL-адрес конечной точки для агрегации, например,
GET /full_companies/25
Тогда это становится еще сложнее, потому что ng-resource
не понимает один URL для запроса (GET
) и еще один для команды (PUT
/PATCH
/DELETE
)?