Angularjs $resource DELETE 未在请求正文中传递数据

标签 angularjs

我有以下代码:

deleteArticle = function(assetData) {
   var defer;
   var assetId = assetData.assetId;
   var cseService = $resource(CSE_CONFIG.apiBaseUrl + 'articles/' + assetId,{},   {'remove': {method: 'DELETE', isArray: false}});

   defer = $q.defer();
   $log.info(assetData.data);
   cseService.remove(assetData.data, function(results) {
       return defer.resolve(results);
   }, function(results) {
      $log.error('suggestionsService deleteArticle error', results);
      return defer.reject(results);
   });

   return defer.promise;
}

assetData = {"assetId":12345,"data":{"inproperty":true,"comment":"这是评论"}}

我使用express作为服务器,这是我的路线:

app.delete('/api/v1/articles/:assetId', function (req, res) {
        console.log("delete is called for " + req.params.assetId);
        console.log(req.body);
        for (var i = 0; i < suggestions[0].articles.length; i++) {
            var row = suggestions[0].articles[i];
            if (row.assetId === req.params.assetId) {
                suggestions[0].articles.splice(i,1);
                console.log("REMOVED:::::");
                console.log(row);
                return res.send("OK",200);
            }
        }
        return res.send("BAD Request",400);
    });

当我将其发送到服务器时,req.body 不包含 assetData.data。所以问题是,如何使用 $resource 和 method=DELETE 发送正文? 注意:我使用 Chrome:Postman REST 客户端测试了服务器,它工作正常,但在使用 Angular 时却无法正常工作。

最佳答案

您可以修改$resource的每个请求的默认行为。 检查 $resource tranformRequest

示例:

var myResource = $resource(url, params, {
   'delete' : function(data,headers) {
       var myData = { bob: 'bob' };
       return myData;
   }
}

关于Angularjs $resource DELETE 未在请求正文中传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18752709/

相关文章:

angularjs - 在 bootstrap 固定导航栏上方和下方添加内容

javascript - Angular/Typescript——通过示例解释接口(interface)的好处

javascript - 使用链式 promise 进行 AngularJS karma 测试

javascript - 'GET' 请求上的 AngularJS badcfg

javascript - 使用 AngularJs 将 html 内容作为纯文本粘贴到 contenteditable div 中

javascript - 其余Api返回数据但未显示在页面上

html - AngularJs 验证 CSS 错误

angularjs - Angular 指令检查元素?

javascript - 从 Struts 2 获取值到 AngularJS

javascript - 从 Controller Angular JS 重构特定于对象的逻辑