在我的Angular应用中,我需要发送$http.delete
请求此路由/projects/:id/activityTypes
(请注意,它不以活动类型ID结尾)传递具有以下格式的正文:
[{"id": 2}]
这是为了通过在数组中发送多个对象来允许批量删除操作。
使用Rest Web Service Client测试上面的路由我得到200, OK
状态,因此路由已经实现并且工作正常,我只需要在我的Angular应用程序中实现它。
现在,I've checked this previous post有一个非常相似的问题,并且知道角度$http.delete
默认情况下不会在请求中发送正文,但是:
[它]允许我们提供配置对象作为第二个参数, 通过它我们可以访问'数据'属性。
所以我尝试了建议并在我的请求中发送了一个配置对象:
return $http.delete('projects/' + projectID + '/activityTypes', {data: [{id: 2}]})
然而,它不起作用。似乎虽然我发送这个配置对象,但我仍然没有发送一个正文。
我如何实际将正文传递到我的$http.delete
路线?
编辑:以上是我发送上述$http.delete
请求时服务器正在记录的内容:
数据似乎已经发送,但我收到此控制台错误,这是我在使用Rest Client时无法获得的:
Object {data: "Json not valid to remove activity type from Project", status: 400, config: Object, statusText: "Bad Request"}
答案 0 :(得分:4)
试试这个:
DictWriter
答案 1 :(得分:1)
@Renato的方法将起作用,但是$http.delete(...)
的方法也将稍作调整。通过在请求选项中包含data
元素,您确实会将数据传递到服务器,并且可以在开发人员控制台中进行确认。但是,如果没有适当的Content-Type,您的服务器可能会忽略它。
以下方法应该起作用:
return $http.delete('projects/' + projectID + '/activityTypes', {data: [{id: 2}], headers: {'Content-Type': 'application/json;charset=utf-8'}})
贷方@Harshit Anand的on another SO post。