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

Including placeholder changes ngResource save() method from POST to GET

一个非常简单的例子。我有一个 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”添加到我的 URL。我这样做是为了让我的 delete 方法传递 id。像这样 'discounts/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

一切正常,接受删除请求,该请求现在不映射占位符,因为它不再存在。

我完全不知道为什么。我是 $resource 的新手,所以我很确定我不理解某些东西。

答案是针对一个不同表述的问题提供的,我想我会分享它。

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() 正确地 POST 我必须在 customConfig 对象中定义一个路径。我不确定为什么开箱即用对我不起作用。

这里提供了答案。非常感谢!