Gre*_*lec 21 angularjs angularjs-resource
假设我有一个这样的资源设置:
resource = $resource(
"http://foo.com/service/:type/:id",
{},
{save: {method:'PUT', params: {type:'@type', id: '@id'}}}
);
resource.save({type:'user', id:14, name:'Bob Dole'});
Run Code Online (Sandbox Code Playgroud)
有什么方法可以阻止type
和id
作为请求体的一部分提交,只是发送name
PUT有效载荷?我不控制我提交的API,它似乎不喜欢我发送它的额外参数.
谢谢!
更新 - 2013年10月25日 - 13:38
资源文档说:
如果参数值以@为前缀,则从数据对象中提取该参数的值(对非GET操作很有用).
这意味着这应该从数据中删除参数:
resource.save({type:'@user', id:'@14', name:'Bob Dole'});
Run Code Online (Sandbox Code Playgroud)
但它似乎没有用.还是不知所措.
小智 33
使用第一个参数作为您的网址模板参数,并将您的帖子数据放在第二个参数中,如下所示:
resource.save({id:14, type:'user'}, {name:'Bob Dole'});
Run Code Online (Sandbox Code Playgroud)
以下是Angular文档中显示函数签名的行:
非GET"类"操作:Resource.action([parameters],postData,[success],[error])
这是plunker的一个例子
您获得的请求在正文中没有url参数:
Request URL:http://run.plnkr.co/JAOqZqW6RSywatUM/badUrl/user/14
Request Method:PUT
Request Payloadview source
{name:Bob Dole}
Run Code Online (Sandbox Code Playgroud)
FWIW,我确实找到了一个解决方法,感谢@ Reboog711,通过包含一个transformRequest参数,如下所示:
resource = $resource(
"http://foo.com/service/:type/:id",
{},
{save: {
method:'PUT',
transformRequest:function(data) {
delete data.type;
delete data.id;
return JSON.stringify(data);
},
params: {type:'@type', id: '@id'}
}}
);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12302 次 |
最近记录: |