AngularJS $resource 使用方法时调用错误的 API URL:POST

2024-03-10

这不是最容易放入标题的问题。

无论如何,我的应用程序是建立在nodejs/expressjs并为 url 设置了 API:

编辑:我当前使用的代码是:

$scope.updateProduct = $resource('/api/updateProduct/:product/:param/:value',{},{
  query: {method:'GET'},
  post: {method:'POST'},
  save: {method:'PUT', params: {brand: '@brand', param:'@param', value:'@value'}},
  remove: {method:'DELETE'}
});
$scope.updateProduct.save({
    product : $scope.post._id, 
    param: 'likes', 
    value: $scope.user._id
  }); 

目前它调用/api/updateProduct代替/api/updateProduct/<product>/<param>/<value>就像我表演时应该做的那样/就像我表演时所做的那样$scope.updateProduct.get().

在我的控制台中我看到(作为示例):

 PUT /api/updateBrand/Quay%20Eyewear%20Australia/userTags/sunglasses,%20classic 200 30ms - 2.31kb

然而,该 API 并未被实际访问/什么也没有发生。有趣的是,如果我去localhost:5000/api/updateBrand/Quay%20Eyewear%20Australia/userTags/sunglasses,%20classic在我的浏览器中,它会发布正确的数据并更新我的数据库中的产品,因此这绝对是一个错误$resource正在被呼叫。


正如你所看到的ngResource 文档 http://docs.angularjs.org/api/ngResource.%24resource, $resource接收3个参数:

$resource(url[, paramDefaults][, actions]);

您将您的操作作为参数传递。

正确的版本是:

$scope.updateProduct = $resource('/api/updateProduct/:product/:param/:value',{}, {'save':{method:'POST'}});

请注意,这甚至没有必要,因为当您使用$resource您已经创建了默认方法:

{ 
    'get':    {method:'GET'},
    'save':   {method:'POST'},
    'query':  {method:'GET', isArray:true},
    'remove': {method:'DELETE'},
    'delete': {method:'DELETE'} 
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS $resource 使用方法时调用错误的 API URL:POST 的相关文章