如何在 $http.delete 中发送和排列

How to send and array in $http.delete

我想删除使用 http post 创建的标签。这是我试过的代码。

$http({
    method: 'DELETE',
    url: '/api/tags',
    data: [vm.tags.name]
}).success(function(data) {
    console.log('Gets DELETED');
    vm.tags.name = data;
}).error(function(data) {
    console.log('Does not get DELETED');
});

但是这不起作用,它只发送一个带有 [null] 的数组。那么有什么我在这里看不到或不理解的东西吗?我的意思是,如果 POST 有效,它应该以与 DELETE 相同的方式工作,对吧?顺便说一句,它显示日志 "Gets DELETED" 但没有这样做。

看看这个answer,如果你在正文中发送一些东西,DELETE被忽略。

你应该像这样发送路径:

current/path?id=1&id=2&id=3&id=4

就像GET方法一样,你不能在正文中发送任何东西。

更新

如果您使用示例中的 URL 参数发出请求,您将收到如下对象:

{ id : [1, 2, 3, 4] }

我得到了解决方案!在我的例子中,HTTP 1.1 能够发送 body,但是 header 不能,所以使用 JSON 的内容。因此,通过将 headers: {'Content-Type': 'application/json;charset=utf-8'} 添加到 $http.delete 的 data: 字段,它起作用了,数组被发送了。

我希望这对某人有所帮助。

感谢您的回答!