我有两项服务:
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});
答案 0 :(得分:4)
您能否显示您的使用代码?
一般情况下,你不应该将你打算放入身体的任何价值放入" params"。它们应该属于一个单独的论点。在$ 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的文档在这里: