我有两项服务:
var PlanResource = $resource('/api/v1/plan/:planId', {}, {
'update': { method:'PUT', params:{ planId : '@_id.$oid' }, isArray : false },
});
和
var UserResource = $resource('/api/v1/user', {}, {
'update': {method:'PUT', params:{ }, isArray : false},
});
当我在第一个调用update时,它将传递的数据放在正文中,而第二个则将其传递到URL中,例如:
PUT /api/v1/user?profiles=%7B%22skeleton%22:false,%data%22:234
为什么会发生这种情况,我又该如何第二次将数据放入体内?
编辑:
用法是:
ctrl.user.$update({'profiles' : appCtrl.user.profiles}).then(function() {
和
ctrl.plan.$update({name: planName});
您可以显示使用代码吗?
通常,您不应将要放入正文中的任何值放入“参数”中。他们应该属于一个单独的论点。在$ resource文档中,有
non-GET "class" actions: Resource.action([parameters], postData, [success], [error])
所以你应该尝试:
UserResource.update({
// URL params here.
}, profiles // Body here.
, ..., ...);
更新后,您正在使用实例方法而不是类方法。在文档中,它说:
non-GET instance actions: instance.$action([parameters], [success], [error])
在实例方法调用中,您只能传递URL参数。请求的主体将自动是对象本身(在您的情况下,ctrl.user将是主体)。
如果您确实想将请求主体修改为对象本身以外的其他东西,请改用类方法。
$ resource的文档在这里:
https://docs.angularjs.org/api/ngResource/service/ $ resource
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句