编程语言
首页 > 编程语言> > javascript – 使用方法:POST时,AngularJS $资源调用错误的API URL

javascript – 使用方法:POST时,AngularJS $资源调用错误的API URL

作者:互联网

不是最简单的问题.

无论如何,我的应用程序是基于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 Eyewear Australia / userTags / sunglasses,在我的浏览器中经典,它会发布正确的数据并在我的数据库中更新产品,所以这肯定是错误的$正在调用资源.

解决方法:

正如您在ngResource docs中看到的那样,$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'} 
};

标签:javascript,angularjs,node-js,api,angular-resource
来源: https://codeday.me/bug/20190629/1324836.html