包括占位符更改ngResource save()方法从POST到GET

时间:2015-06-28 15:56:13

标签: angularjs api rest crud ngresource

一个非常简单的例子。我有一个RESTful api,我按照以下方式设置我的资源。

app.factory('apiFactory' , ['$resource', 'GLOBALS', 
    function($resource, GLOBALS){
        return {
            Discounts: $resource(GLOBALS.apiPath + 'discounts/:id', {id:'@id'}, {update:{method: 'PUT'}})
        }     
    }
])

然后我在控制器中调用它

var discountResponse = apiFactory.Discounts.save($scope.discount);

在我将“/:id”添加到我的网址之前,一切正常。我这样做,以便我的删除方法传递id。就像这样'折扣/ 6'。

我遇到的问题是,只要添加占位符,我的save()方法就会发送GET而不是POST。

Request URL:http://local:8089/api/discounts
Request Method:GET
Status Code:200 OK

如果我删除占位符,我会

Request URL:http://local:8089/api/discounts
Request Method:POST
Status Code:200 OK

一切都很好,接受删除请求,现在不会映射占位符,因为它不再存在。

我完全不知道为什么。我对资源很新,所以我很确定我不理解。

1 个答案:

答案 0 :(得分:0)

答案提供了一个不同的问题,我想我会分享它。

return {
        Discounts: $resource(GLOBALS.apiPath + 'discounts/:id', {id:'@id'} ,{
            save: { 
                method: 'POST', url: GLOBALS.apiPath + "discounts" 
            },
            update: {
                method: 'PUT', url: GLOBALS.apiPath + "discounts/:id" 
            }
        })
    }

似乎对于save()来说,我必须在customConfig对象中定义一个路径。我不确定为什么这对我来说不起作用。

答案在这里提供。非常感谢!
ngResource save() strange behaviour