angularjs - 如何不以 Angular 发送带有请求主体的url模板参数?

标签 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'});

有什么方法可以阻止typeid作为请求正文的一部分提交,而仅在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/

相关文章:

javascript - Scope.attribute 可用但 scope.attribute.variable 在指令中未定义

javascript - Angular 资源 : Error: $resource:badcfg

angularjs - AJAX 调用后加载指令

angularjs - 为什么 ng-repeat 会更改链接函数执行的顺序

html - 如何在我的案例中设置多个类

javascript - 在 JavaScript 中将 JavaScript 传递给闭包

javascript - AngularJS - XX 不是一个函数

javascript - 使用 ng-click 单击其他按钮时按钮颜色发生变化

javascript - 使用按钮处理多个 Controller

javascript - Angularjs 资源 URL