2013-03-01 97 views
22

我需要发送一个请求主体和我使用$resource用DELETE请求发送正文的干净方式是什么?

的唯一途径DELETE请求我可以看到这样做是为了改变:

https://github.com/angular/angular.js/blob/master/src/ngResource/resource.js

var hasBody = action.method == 'POST' || action.method == 'PUT' || action.method == 'PATCH'; 

var hasBody = action.method == 'POST' || action.method == 'PUT' || action.method == 'PATCH' || action.method == 'DELETE'; 

有没有更好的方法来覆盖这个?当你改变了内容类型头就像你可以这样做:

$httpProvider.defaults.headers["delete"] = {'Content-Type': 'application/json;charset=utf-8'}; 

或类似的东西...香港专业教育学院用Google搜索这一点,但也许伊夫错过了一些明显的(不是第一次)。感谢您提前提供任何帮助。

+0

我想指出的是您的解释资源。 DELETE应该删除由URL标识的资源。所以你不应该在身体里发送数据。 – 2013-03-01 13:57:27

+0

在DELETE – paullth 2013-03-01 13:59:30

+0

+1上允许特定的内容,我准备发布相同的确切问题。 @SubirKumarSao,我想发送一个请求正文与我的DELETE删除多个资源(要删除的资源是什么在请求正文)。有没有更加RESTful的方式来做到这一点? – dnc253 2013-03-05 06:40:11

回答

2

可以注入$httphttp://docs.angularjs.org/api/ng.%24http#Usage)组件到您的控制器之一的一个,并通过如下使用它:

$http({method: 'DELETE', url: 'www.url.com', headers: {'X-MY-HEADER': 'MY_VALUE'}}); 

我希望这个你所期望的。

+0

我试图做到这一点与Angular资源http://docs.angularjs.org/api/ngResource.$resource,没有在问题中说清楚,对不起 – paullth 2013-03-01 14:01:24

+0

好的。我认为$资源不是用于这种处理,它显然是用于数据绑定的上下文中。对于特定的特定请求,我猜想$ http必须直接使用。 – 2013-03-01 14:35:23

+0

从我正在阅读的内容来看,如果这是自定义标题,添加“X-”前缀被认为是不好的做法。我宁愿发送内容与删除比自定义标题。 – rgbrgb 2013-07-09 17:36:48

24

This works。

$scope.delete = function(object) { 
    $http({ 
     url: 'domain/resource', 
     method: 'DELETE', 
     data: { 
      id: object.id 
     }, 
     headers: { 
      "Content-Type": "application/json;charset=utf-8" 
     } 
    }).then(function(res) { 
     console.log(res.data); 
    }, function(error) { 
     console.log(error); 
    }); 
}; 
+0

不。这不是。同'$ http.delete('domain/resource',{id:object.id});' – Martin 2015-04-30 16:01:45

+1

好的,我编辑了你的答案,你应该添加正确的头文件。现在它的作品:) – Martin 2015-04-30 16:10:41

+0

地狱是啊!这个解决方案对我有用!!!!! – davidrl1000 2016-02-27 05:01:00

相关问题