我的REST有一个相当简单的CRUD模型。我的问题是当我聚合性能并保持服务器端的公共业务逻辑时如何处理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
无法理解查询的一个网址(GET
)而另一个用于命令(PUT
/ PATCH
/ {{1 }})?