Javascript 为什么在AngularJs中http.delete时不能传递参数?

Javascript 为什么在AngularJs中http.delete时不能传递参数?,javascript,angularjs,http,Javascript,Angularjs,Http,我有调用http.delete并传递参数标志的函数: function softDeleteDatasource(datasourceId,flag) { var url = baseUrl + datasourceId; return $http.delete(url, {'currentFieldSetFlag':flag}); } 然后我假设我可以用下面的代码得到req.body。但是,我总是在控制台.log中获得未定义的。

我有调用http.delete并传递参数标志的函数:

function softDeleteDatasource(datasourceId,flag) {
            var url = baseUrl + datasourceId;
            return $http.delete(url, {'currentFieldSetFlag':flag});
        }
然后我假设我可以用下面的代码得到req.body。但是,我总是在
控制台.log中获得
未定义的
。我在
http.post
中使用了完全相同的代码,它在传递参数时运行良好

var bodyParser = require('body-parser');
var jsonParser = bodyParser.json();
router.delete('/:datasourceId', jsonParser, function(req, res) {
   console.log(req.body.currentFieldSetFlag);
}

我不明白为什么相同的代码不能在
http.delete
中传递参数?有人知道如何传递吗?

HTTP规范允许删除主体,但有些客户端不发送主体,有些代理/服务器会删除/忽略主体(如果存在)。这应该可以将其作为querystring参数传递:

return $http.delete(url, {params: {'currentFieldSetFlag':flag}});

调试的第一步是转到浏览器控制台中的“网络”选项卡并检查请求。angular是否发送了json,或者参数是否添加到了url中。@KevinB看起来它没有发送json,但我不明白为什么,因为http.post的相同代码工作得很好。