AngularJS Resource-PUT方法未获取id
我有一个为我的文章模型返回$resource的工厂:AngularJS Resource-PUT方法未获取id,angularjs,angularjs-resource,Angularjs,Angularjs Resource,我有一个为我的文章模型返回$resource的工厂: angular.module('ADI.Resources').factory("Articles", ['$resource', function($resource) { return $resource('/api/v1/article/:articleId', { articleId: '@_id', _shop: window.user._shop }, { updat
angular.module('ADI.Resources').factory("Articles", ['$resource', function($resource) {
return $resource('/api/v1/article/:articleId', {
articleId: '@_id',
_shop: window.user._shop
}, {
update: {
method: 'PUT'
}
});
}]);
GET
、POST
和DELETE
工作正常,但更新(PUT)不起作用。以下是我使用的代码:
Articles.update({articleId: '300000000000000000000001'}, function(article){
console.log(article);
});
它提出这个要求:
PUT http://localhost:3000/api/v1/article?_shop=100000000000000000000001
而不是:
PUT http://localhost:3000/api/v1/article/300000000000000000000001?_shop=100000000000000000000001
你知道为什么更新时没有填写:articleId参数吗?谢谢 正如Fals在评论中提到的,articleId参数在请求内容中。所以我做了一个小把戏,把它也放在URI上
angular.module('ADI.Resources').factory("Articles", ['$resource', function($resource) {
return $resource('/api/v1/article/:articleId', {
articleId: '@_id',
_shop: window.user._shop
}, {
update: {
method: 'PUT',
params: {
articleId: "@articleId"
}
}
});
}]);
我也有同样的问题,这里的问题是针对以下行:
articleId: '@_id',
这条线应该是:
articleId: '@articleId',
articleId不需要再次定义。PUT应该将内容发送到请求中,而不是URL中!谢谢你的回复!它实际上是像你说的那样在内容中发送articleId。我想我在计划API时犯了一个错误。由于前一段时间的一些错误,我在angular git中犯了一个问题,他们说在这一部分不要使用任何参数:
{articleId:'@_id',_shop:window.user._shop},
当您不想在请求中全局提供它们时。。。当你没有在另一个请求中设置它,并且在你的模型中你有类似的东西,它会从模型中选择该值,你的url会变得疯狂。然而今天,我正在编写另一个服务,当我不使用它们时,它会发送吗?查询字符串:|而不是。。。