为什么我在AngularJs中的http.delete时无法传递参数?

erk*_*opi 5 javascript http angularjs

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

function softDeleteDatasource(datasourceId,flag) {
            var url = baseUrl + datasourceId;
            return $http.delete(url, {'currentFieldSetFlag':flag});
        }
Run Code Online (Sandbox Code Playgroud)

然后我假设我可以使用以下代码获取req.body.但是,我总是undefinedconsole.log.我使用完全相同的代码http.post,它在传递参数时工作正常.

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

我很困惑为什么相同的代码不能传递参数http.delete?谁知道怎么通过呢?

jle*_*lew 4

HTTP 规范允许 DELETE 上的主体,但某些客户端不会发送它们,并且某些代理/服务器将删除/忽略它们(如果存在)。这应该可以将其作为查询字符串参数传递:

return $http.delete(url, {params: {'currentFieldSetFlag':flag}});
Run Code Online (Sandbox Code Playgroud)