0

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

预期网址示例:

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

Url 包含 :id 参数,这就是为什么我的工厂看起来像这样:

.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 ”参数不仅在 url 中发送,而且在请求正文(请求有效负载)中发送为 {“id”:1}。

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

所以。如何告诉 ngResource 清除或填充正文?

4

1 回答 1

1

Angular 文档$resource不是很好,但是如果您查看文档中的最后一个示例,您会得到答案。请参阅“创建自定义 'PUT' 请求”部分

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

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

于 2014-07-05T12:32:12.480 回答