2013-03-01 4 views
22

muszę wysłać ciała żądania z moich DELETE wniosków wykorzystujących $resourceJaki jest czysty sposób wysyłania treści z żądaniem DELETE?

jedynym sposobem mogłem zobaczyć to zrobić było zmienić:

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

Od

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

To

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

Czy istnieje lepszy sposób, aby to zmienić? Jak wtedy, gdy zmieniają nagłówek typu zawartości można zrobić:

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

lub coś podobnego ... Ive google, ale może to Ive przegapić coś oczywistego (nie po raz pierwszy). Dzięki za pomoc z góry.

+0

chciałbym podkreślić. DELETE ma na celu usunięcie zasobu zidentyfikowanego przez adres URL. Więc nie powinieneś wysyłać danych do ciała. –

+0

Im pewne ciało jest dozwolone na DELETE – paullth

+0

+1, miałem zamiar wysłać dokładnie to samo pytanie. @SubirKumarSao, Chcę wysłać ciało żądania z moim DELETE do usuwania wielu zasobów (zasoby, które mają być usunięte, znajdują się w treści żądania). Czy istnieje więcej RESTful sposób to zrobić? – dnc253

Odpowiedz

2

Można wstrzyknąć się $http (http://docs.angularjs.org/api/ng.%24http#Usage) komponent do jednego z jednego z kontrolerów i używając go w następujący sposób:

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

Mam nadzieję, że to, czego się spodziewać.

+0

Próbuję zrobić to za pomocą Angular Resource http://docs.angularjs.org/api/ngResource.$resource, nie było jasne w pytaniu, przepraszam – paullth

+0

Ok. Myślę, że $ zasób nie jest przeznaczony na takie traktowanie, najwyraźniej ma być używany w kontekście powiązania danych. Dla konkretnego żądania, domyślnie $ HTTP musi być użyty bezpośrednio. –

+0

Z tego, co czytam, za niewłaściwą praktykę uważa się dodanie przedrostka "X-", jeśli jest to niestandardowy nagłówek. Wciąż wolałbym wysyłać treść z usunięciem niż niestandardowym nagłówkiem. – rgbrgb

24

To działa.

$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

nie. To nie działa. Taki sam jak '$ http.delete ('domena/zasób', {id: object.id});' – Martin

+1

OK, edytowałem twoją odpowiedź, powinieneś dodać poprawny nagłówek. Teraz działa :) – Martin

+0

Hell yeah !!!! To rozwiązanie zadziałało dla mnie !!!!! – davidrl1000