在ngResource查询中从PUT请求中删除body

时间:2014-07-05 11:33:56

标签: javascript angularjs ajax rest ngresource

我应该为某个网址发送 PUT 查询。 但是如果它包含任何正文(JSON,例如{" id":1}),请休息拒绝我的查询。 当我使用ngResource而不是$ http时,查询已经包含一个正文。我该如何删除它?

预期网址示例:

http://some.com/rest/some/1/smth?method=start

网址包含:id param,这就是为什么我的工厂看起来像这样:

.factory('ApiResourceFactory', ['$resource', function ($resource) {
        return {
            payment: $resource('http://some.com/rest/some/:id/smth',
                {orderId: '@id'},
                {
                    start: {method: "PUT", 'params': {'method': "start"}},
                    //...
                }
            )
         }
}])

这就是我如何使用它:

var id = 1;
ApiResourceFactory.payment.start({id: id}, function () {
    //on success
}, function (responce) {
    //on error
});

问题是:" id " param不仅在url中发送,而且在请求体中发送(请求有效负载)为{" id":1}。

没有正文(例如,当我使用$ http时),查询成功,但是机构服务器拒绝我的查询。

因此。 怎么可能我告诉ngResource清楚或填充身体?

1 个答案:

答案 0 :(得分:1)

$resource的角度文档不是很好,但是如果你看一下文档中的最后一个例子,你就会得到答案。请参阅"创建自定义' PUT'请求 "

您设置params的方式不正确。如果您使用@,则参数匹配从正文内容发生。您无需提供params对象。对start方法的调用也略有不同。

在这里查看我的小提琴http://jsfiddle.net/cmyworld/wLQnq/