我们使用ng-resource提供此服务:
var app = angular.module('salonesbelleza', []);
app.service("CentroBorrar_srv", function ($resource, UrlBaseApi_srv) {
return{
return $resource('wa-centros/:id',
{id:'@id', access_token:'@access_token'},
{ "post": { method: "DELETE",
isArray: false,
headers: {
'Accept': 'application/json; q=1.0, */*; q=0.1',
'Content-Type':'application/json'
}
}}
);
}
});
在控制器中我们使用这种方式
var CentroBorrar_data = CentroBorrar_srv.post({
id:10,
othervar1:'VALUE_1',
othervar1:'VALUE_2',
access_token:'MY TOKEN'
});
使用此ng-resource我们使用一些额外的变量来删除id = 10的元素,例如acces_token
这项工作非常好。 这是此ng-resource
生成的URLwa-centros/10?access_token=MY_TOKEN&othervar1=VALUE_1&othervar2=VALUE_2
所有变量都是使用URL中的GET发送但我们希望使用POST发送一些变量而其他变量使用GET。例如,我们想使用POST发送othervar1和othervar2。
有没有办法我们可以在ng-resource定义中强制控制器中的var必须通过POST发送,哪些必须使用GET发送
我对这个问题感到迷茫
非常感谢您提前
答案 0 :(得分:0)
是的,可以添加参数。您必须为此声明自定义操作。 有两种方法可以创建具有“非GET”类型的自定义操作(从角度文档中获取):
我认为你正在使用第一个,即非GET“类”行动。 根据你的例子,你应该有这样的东西:
return $resource('rest-link/:id',
{id:'@id', access_token:'@access_token'},
{ "yourCustomActionNameHere": { method: "POST",
isArray: false,
headers: {
'Accept': 'application/json; q=1.0, */*; q=0.1',
'Content-Type':'application/json'
},
params : {yourParam1 : val}
}}
);
请注意,params已添加到您的资源操作中,即 yourParam1 。正如我之前提到的,它是一个非GET“类”动作,这意味着你也传递了数据对象。在调用资源时应该考虑到这一点:
<YourResourceNameHere>.yourCustomActionNameHere({yourParam1: 12}, dataObject)
您应该注意参数,即使用默认参数。对于非GET 方法,例如您没有为参数paramName
提供值,意味着搜索将继续您定义的对象属性在dataObject
发送到 POST 方法中,搜索name-value
对,其中name
与您的paramName
相同。
你应该看看实例方法,在我看来它们更容易使用,并提供更大的灵活性和可读性。
例如,对于 POST 操作,您可以进行CentroBorrar.$save({param : val})
之类的调用,其中 CentroBorrar 是一个实例,并会保存数据对象。 (简短示例here)。
真的希望这会有所帮助。