假设我建立了这样的资源:
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'});
有什么方法可以阻止
type
和id
作为请求正文的一部分提交,而仅在PUT有效负载中发送name
?我无法控制要提交的API,而且似乎不喜欢我要发送的额外参数。谢谢!
更新-13/10/25-13:38
resource的文档说:
If the parameter value is prefixed with @ then the value of that parameter is extracted from the data object (useful for non-GET operations).
这意味着应该从数据中删除参数:
resource.save({type:'@user', id:'@14', name:'Bob Dole'});
但它似乎不起作用。仍然茫然。
最佳答案
使用第一个参数作为url模板参数,然后将发布数据放入第二个参数,如下所示:
resource.save({id:14, type:'user'}, {name:'Bob Dole'});
这是Angular docs中显示函数签名的行:
非GET“类”操作:Resource.action([参数],postData,[成功],[错误])
这是plunker中的示例
您收到的请求的主体中没有url参数:
Request URL:http://run.plnkr.co/JAOqZqW6RSywatUM/badUrl/user/14
Request Method:PUT
Request Payloadview source
{name:Bob Dole}
关于angularjs - 如何不以 Angular 发送带有请求主体的url模板参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19529483/