发送带有正文的 Angular $http.delete

Tia*_*ago 4 javascript ajax angularjs

在我的 Angular 应用程序中,我需要通过$http.delete此路由发送请求/projects/:id/activityTypes(注意它不以活动类型 ID 结尾)并传递以下格式的正文:

[{"id": 2}]
Run Code Online (Sandbox Code Playgroud)

这是为了允许通过发送数组内的多个对象来进行批量删除操作。

使用 Rest Web 服务客户端测试上面的路由,我得到一个200, OK状态,因此该路由已经实现并且工作正常,我只需要在我的 Angular 应用程序中实现它。

现在,我检查了上一篇文章,其中有一个非常相似的问题,并了解到 Angular$http.delete默认情况下不会在请求中发送正文,但是:

[它]确实允许我们提供一个配置对象作为第二个参数,通过它我们可以访问“data”属性。

所以我尝试了建议的方法并在我的请求中发送了一个配置对象:

return $http.delete('projects/' + projectID + '/activityTypes', {data: [{id: 2}]})
Run Code Online (Sandbox Code Playgroud)

然而,它不起作用。看起来虽然我发送了这个配置对象,但我仍然没有发送正文。

我怎样才能真正将尸体传递到我的$http.delete路线上?

编辑:这是当我发送上面的请求时服务器正在记录的内容$http.delete

在此输入图像描述

数据似乎已发送,但我收到此控制台错误,但在使用 Rest 客户端时未收到此错误:

Object {data: "Json not valid to remove activity type from Project", status: 400, config: Object, statusText: "Bad Request"}
Run Code Online (Sandbox Code Playgroud)

小智 6

尝试这个:

$http({
            method: 'DELETE',
            url: 'projects/' + projectID + '/activityTypes',
            data: [{id: 2}]},
            headers: {
                'Content-type': 'application/json;charset=utf-8'
            });
Run Code Online (Sandbox Code Playgroud)