2013-03-01 96 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

相關問題