I need to send a request body with my DELETE requests using $resource
The only way I could see to do this was to change:
https://github.com/angular/angular.js/blob/master/src/ngResource/resource.js
From
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';
Is there a better way to override this? Like when you alter the content type header you can do:
$httpProvider.defaults.headers["delete"] = {'Content-Type': 'application/json;charset=utf-8'};
Or something similar... Ive googled this but maybe Ive missed something obvious (not for the first time). Thanks for any help in advance.
Yes it is allowed to include a body on DELETE requests, but it's semantically meaningless. What this really means is that issuing a DELETE request with a request body is semantically equivalent to not including a request body.
We shall first send a DELETE request via Postman on an endpoint − http://dummy.restapiexample.com/api/v1/delete/100. Using Rest Assured, we shall check if the response body contains the string Successfully! Record has been deleted.
According to Mozilla a DELETE request "may" have a body, compared to a PUT, which should have a body. By this it seems optional whether you want to provide a body for a DELETE request.
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);
    });
};
You can inject the $http (http://docs.angularjs.org/api/ng.%24http#Usage) component into one of one of your controllers and by using it as follows :
$http({method: 'DELETE', url: 'www.url.com', headers: {'X-MY-HEADER': 'MY_VALUE'}});
I hope this what you expected.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With