一个非常简单的例子。我有一个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
一切都很好,接受删除请求,现在不会映射占位符,因为它不再存在。
我完全不知道为什么。我对资源很新,所以我很确定我不理解。
答案 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