因此,我沿这些方向拥有REST资源...
/api/Dogs
/api/Dogs/1
/api/Dogs/2
...
狗看起来像...
{
Id: 1,
Url: "http://kennelclub/api/Dogs/1",
Name: "Butch"
}
还有第二种资源...
/api/Owners
/api/Owners/1
....
为了方便起见,为了让主人养狗,我有这种查询方法...
/api/Owners/1/Dogs/
现在,很容易获得AngularJS$resource
来阅读主人的狗,如下所示...
var ownersDogs = $resource("/api/Owners/:ownerId/Dogs/:dogId", { dogId: "@Id" });
var ownersDogs.query({ ownerId: 1 });
最后,一个问题
我想对通过此URL获得的具有魔角$save
功能的狗进行更改...
ownersDogs[0].Name = "Barry";
ownersDogs[0].$save();
但是,这里有两个问题...
ownerId
的$get
/$save
函数提供电源,以使其正常工作。如果要编辑返回的狗,则需要使用/api/Dogs/1
URL。这既允许读/写,也不需要ownerId。您会注意到,该Url已经嵌入在返回的Dog对象中。
有一些方法可以让我得到了$save
,$get
等返回的对象上的功能自动(?)使用URL嵌入资源?至少,是否有某种方法可以更改$save
将使用的URL ?
您可以使用自定义url将自定义方法添加到资源中:
var ownersDogs = $resource("/api/Owners/:ownerId/Dogs/:dogId", { dogId: "@Id" },
{
'savedog': { method : 'PUT', url: '/api/Dogs/:dogId'}
}
);
调用它:
ownersDogs[0].$savedog();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句