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/

相关文章:

angularjs $resource 不替换 POST url 模板中的变量

angularjs - 资源解析后,在 ngResource 对象的 $promise 属性的 then() 函数中获取响应 header ?

javascript - AngularJS $state 使用 ctrl + 单击在新选项卡中打开链接

javascript - Angularjs 资源多参数

javascript - 在 AngularJS $resource 中使用嵌入的资源 URL

angularjs - Angular UI 路由器 - 动态 TemplateURL

AngularJS $resource header POST

angularjs - $state.go() 后侧菜单不起作用 - ionic

angularjs - 嵌套 ng-repeat 的 DOM 娱乐性能问题

angularjs - 如何在 AngularJS 中创建下拉过滤器结果