web-dev-qa-db-fra.com

Qu'est-ce qu'un moyen propre d'envoyer un corps avec une demande DELETE?

J'ai besoin d'envoyer un corps de demande avec mes demandes DELETE en utilisant $ resource

La seule façon pour moi de voir cela était de changer:

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

De

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';

Existe-t-il une meilleure façon de contourner cela? Comme lorsque vous modifiez l'en-tête du type de contenu, vous pouvez faire:

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

Ou quelque chose de similaire ... J'ai fait une recherche sur Google, mais peut-être que j'ai raté quelque chose d'évident (pas pour la première fois). Merci d'avance pour toute aide.

23
paullth

Cela marche.

$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);
    });
};
26
Simba

Vous pouvez injecter le $http ( http://docs.angularjs.org/api/ng.%24http#Usage ) dans l'un de vos contrôleurs et en l'utilisant comme suit:

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

J'espère que c'est ce que vous attendiez.

2
Halim Qarroum