Sending body in HttpClient delete method (Angular 5)












1














I'm migrating Http to HttpClient in an Angular 5 application and everything went fine until I got to this method of one of the services:



deleteMultipleObjects(userId: number, officeId : number, objectsData : any) {
const url = `${APP_URL}/delete-objects/${userId}/${officeId}`;

let headers = new Headers({ 'Content-Type': 'application/json' });

this.appOptionsService.log("Deleting multiple objects.....", url, objectsData);

return this.http
.delete(url, { headers : headers, body : objectsData } )
.map(this.extractData)
.catch(this.handleError);
}


As you can see, I pass an object objectsData in the body of the delete call that basically has this structure:



{
objectIds: [id1, id2, id3, ...]
}


I see that the delete method in the HttpClient doesn't allow to include a body, so how could I send the array of object ids to delete with the call? I have a lot of delete calls that are the same as this one, so I'll have to change a lot of things in the code to adapt it...



Thanks!










share|improve this question






















  • The body for delete method is not preferable so many platforms have started to ignore the body for delete request.
    – Sumeet Kale
    Feb 8 '18 at 12:32










  • So, if I want to delete several objects at once, do I have to use a PUT request instead of a DELETE?
    – Fel
    Feb 8 '18 at 12:47










  • Yes. That's the only workaround to achieve multiple delete.
    – Sumeet Kale
    Feb 8 '18 at 12:47










  • Thanks, I'll change all the calls then... cheers.
    – Fel
    Feb 8 '18 at 13:08
















1














I'm migrating Http to HttpClient in an Angular 5 application and everything went fine until I got to this method of one of the services:



deleteMultipleObjects(userId: number, officeId : number, objectsData : any) {
const url = `${APP_URL}/delete-objects/${userId}/${officeId}`;

let headers = new Headers({ 'Content-Type': 'application/json' });

this.appOptionsService.log("Deleting multiple objects.....", url, objectsData);

return this.http
.delete(url, { headers : headers, body : objectsData } )
.map(this.extractData)
.catch(this.handleError);
}


As you can see, I pass an object objectsData in the body of the delete call that basically has this structure:



{
objectIds: [id1, id2, id3, ...]
}


I see that the delete method in the HttpClient doesn't allow to include a body, so how could I send the array of object ids to delete with the call? I have a lot of delete calls that are the same as this one, so I'll have to change a lot of things in the code to adapt it...



Thanks!










share|improve this question






















  • The body for delete method is not preferable so many platforms have started to ignore the body for delete request.
    – Sumeet Kale
    Feb 8 '18 at 12:32










  • So, if I want to delete several objects at once, do I have to use a PUT request instead of a DELETE?
    – Fel
    Feb 8 '18 at 12:47










  • Yes. That's the only workaround to achieve multiple delete.
    – Sumeet Kale
    Feb 8 '18 at 12:47










  • Thanks, I'll change all the calls then... cheers.
    – Fel
    Feb 8 '18 at 13:08














1












1








1


1





I'm migrating Http to HttpClient in an Angular 5 application and everything went fine until I got to this method of one of the services:



deleteMultipleObjects(userId: number, officeId : number, objectsData : any) {
const url = `${APP_URL}/delete-objects/${userId}/${officeId}`;

let headers = new Headers({ 'Content-Type': 'application/json' });

this.appOptionsService.log("Deleting multiple objects.....", url, objectsData);

return this.http
.delete(url, { headers : headers, body : objectsData } )
.map(this.extractData)
.catch(this.handleError);
}


As you can see, I pass an object objectsData in the body of the delete call that basically has this structure:



{
objectIds: [id1, id2, id3, ...]
}


I see that the delete method in the HttpClient doesn't allow to include a body, so how could I send the array of object ids to delete with the call? I have a lot of delete calls that are the same as this one, so I'll have to change a lot of things in the code to adapt it...



Thanks!










share|improve this question













I'm migrating Http to HttpClient in an Angular 5 application and everything went fine until I got to this method of one of the services:



deleteMultipleObjects(userId: number, officeId : number, objectsData : any) {
const url = `${APP_URL}/delete-objects/${userId}/${officeId}`;

let headers = new Headers({ 'Content-Type': 'application/json' });

this.appOptionsService.log("Deleting multiple objects.....", url, objectsData);

return this.http
.delete(url, { headers : headers, body : objectsData } )
.map(this.extractData)
.catch(this.handleError);
}


As you can see, I pass an object objectsData in the body of the delete call that basically has this structure:



{
objectIds: [id1, id2, id3, ...]
}


I see that the delete method in the HttpClient doesn't allow to include a body, so how could I send the array of object ids to delete with the call? I have a lot of delete calls that are the same as this one, so I'll have to change a lot of things in the code to adapt it...



Thanks!







angular httpclient






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Feb 8 '18 at 12:29









FelFel

595721




595721












  • The body for delete method is not preferable so many platforms have started to ignore the body for delete request.
    – Sumeet Kale
    Feb 8 '18 at 12:32










  • So, if I want to delete several objects at once, do I have to use a PUT request instead of a DELETE?
    – Fel
    Feb 8 '18 at 12:47










  • Yes. That's the only workaround to achieve multiple delete.
    – Sumeet Kale
    Feb 8 '18 at 12:47










  • Thanks, I'll change all the calls then... cheers.
    – Fel
    Feb 8 '18 at 13:08


















  • The body for delete method is not preferable so many platforms have started to ignore the body for delete request.
    – Sumeet Kale
    Feb 8 '18 at 12:32










  • So, if I want to delete several objects at once, do I have to use a PUT request instead of a DELETE?
    – Fel
    Feb 8 '18 at 12:47










  • Yes. That's the only workaround to achieve multiple delete.
    – Sumeet Kale
    Feb 8 '18 at 12:47










  • Thanks, I'll change all the calls then... cheers.
    – Fel
    Feb 8 '18 at 13:08
















The body for delete method is not preferable so many platforms have started to ignore the body for delete request.
– Sumeet Kale
Feb 8 '18 at 12:32




The body for delete method is not preferable so many platforms have started to ignore the body for delete request.
– Sumeet Kale
Feb 8 '18 at 12:32












So, if I want to delete several objects at once, do I have to use a PUT request instead of a DELETE?
– Fel
Feb 8 '18 at 12:47




So, if I want to delete several objects at once, do I have to use a PUT request instead of a DELETE?
– Fel
Feb 8 '18 at 12:47












Yes. That's the only workaround to achieve multiple delete.
– Sumeet Kale
Feb 8 '18 at 12:47




Yes. That's the only workaround to achieve multiple delete.
– Sumeet Kale
Feb 8 '18 at 12:47












Thanks, I'll change all the calls then... cheers.
– Fel
Feb 8 '18 at 13:08




Thanks, I'll change all the calls then... cheers.
– Fel
Feb 8 '18 at 13:08












1 Answer
1






active

oldest

votes


















-1














You can not send body in DELETE http request in Angular.



HTTP specification on MDN says that this possible. documentation page.



If you need this functionality, you should use PUT as workaround. Another method to allow multiple e.g. id's on your delete API endpoint. For example:



https://server.com/api/delete?ids=1,2,3,4,5


That requires some changes on your api.






share|improve this answer























  • I changed the DELETE requests for PUT equivalents, so I can use the body in the call to send the objects to be deleted.
    – Fel
    Jun 3 '18 at 6:30










  • the HTTP Delete MAY have a body. It's a missing angular feature. developer.mozilla.org/en-US/docs/Web/HTTP/Methods/DELETE
    – GlueLabs
    Nov 20 '18 at 12:24






  • 1




    @GlueLabs at the moment, where I answered that question the MDN documentation page doesn't have this information.
    – Gregor Doroschenko
    Nov 20 '18 at 15:21











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f48685569%2fsending-body-in-httpclient-delete-method-angular-5%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









-1














You can not send body in DELETE http request in Angular.



HTTP specification on MDN says that this possible. documentation page.



If you need this functionality, you should use PUT as workaround. Another method to allow multiple e.g. id's on your delete API endpoint. For example:



https://server.com/api/delete?ids=1,2,3,4,5


That requires some changes on your api.






share|improve this answer























  • I changed the DELETE requests for PUT equivalents, so I can use the body in the call to send the objects to be deleted.
    – Fel
    Jun 3 '18 at 6:30










  • the HTTP Delete MAY have a body. It's a missing angular feature. developer.mozilla.org/en-US/docs/Web/HTTP/Methods/DELETE
    – GlueLabs
    Nov 20 '18 at 12:24






  • 1




    @GlueLabs at the moment, where I answered that question the MDN documentation page doesn't have this information.
    – Gregor Doroschenko
    Nov 20 '18 at 15:21
















-1














You can not send body in DELETE http request in Angular.



HTTP specification on MDN says that this possible. documentation page.



If you need this functionality, you should use PUT as workaround. Another method to allow multiple e.g. id's on your delete API endpoint. For example:



https://server.com/api/delete?ids=1,2,3,4,5


That requires some changes on your api.






share|improve this answer























  • I changed the DELETE requests for PUT equivalents, so I can use the body in the call to send the objects to be deleted.
    – Fel
    Jun 3 '18 at 6:30










  • the HTTP Delete MAY have a body. It's a missing angular feature. developer.mozilla.org/en-US/docs/Web/HTTP/Methods/DELETE
    – GlueLabs
    Nov 20 '18 at 12:24






  • 1




    @GlueLabs at the moment, where I answered that question the MDN documentation page doesn't have this information.
    – Gregor Doroschenko
    Nov 20 '18 at 15:21














-1












-1








-1






You can not send body in DELETE http request in Angular.



HTTP specification on MDN says that this possible. documentation page.



If you need this functionality, you should use PUT as workaround. Another method to allow multiple e.g. id's on your delete API endpoint. For example:



https://server.com/api/delete?ids=1,2,3,4,5


That requires some changes on your api.






share|improve this answer














You can not send body in DELETE http request in Angular.



HTTP specification on MDN says that this possible. documentation page.



If you need this functionality, you should use PUT as workaround. Another method to allow multiple e.g. id's on your delete API endpoint. For example:



https://server.com/api/delete?ids=1,2,3,4,5


That requires some changes on your api.







share|improve this answer














share|improve this answer



share|improve this answer








edited Nov 20 '18 at 15:25

























answered Feb 8 '18 at 15:56









Gregor DoroschenkoGregor Doroschenko

3,79631527




3,79631527












  • I changed the DELETE requests for PUT equivalents, so I can use the body in the call to send the objects to be deleted.
    – Fel
    Jun 3 '18 at 6:30










  • the HTTP Delete MAY have a body. It's a missing angular feature. developer.mozilla.org/en-US/docs/Web/HTTP/Methods/DELETE
    – GlueLabs
    Nov 20 '18 at 12:24






  • 1




    @GlueLabs at the moment, where I answered that question the MDN documentation page doesn't have this information.
    – Gregor Doroschenko
    Nov 20 '18 at 15:21


















  • I changed the DELETE requests for PUT equivalents, so I can use the body in the call to send the objects to be deleted.
    – Fel
    Jun 3 '18 at 6:30










  • the HTTP Delete MAY have a body. It's a missing angular feature. developer.mozilla.org/en-US/docs/Web/HTTP/Methods/DELETE
    – GlueLabs
    Nov 20 '18 at 12:24






  • 1




    @GlueLabs at the moment, where I answered that question the MDN documentation page doesn't have this information.
    – Gregor Doroschenko
    Nov 20 '18 at 15:21
















I changed the DELETE requests for PUT equivalents, so I can use the body in the call to send the objects to be deleted.
– Fel
Jun 3 '18 at 6:30




I changed the DELETE requests for PUT equivalents, so I can use the body in the call to send the objects to be deleted.
– Fel
Jun 3 '18 at 6:30












the HTTP Delete MAY have a body. It's a missing angular feature. developer.mozilla.org/en-US/docs/Web/HTTP/Methods/DELETE
– GlueLabs
Nov 20 '18 at 12:24




the HTTP Delete MAY have a body. It's a missing angular feature. developer.mozilla.org/en-US/docs/Web/HTTP/Methods/DELETE
– GlueLabs
Nov 20 '18 at 12:24




1




1




@GlueLabs at the moment, where I answered that question the MDN documentation page doesn't have this information.
– Gregor Doroschenko
Nov 20 '18 at 15:21




@GlueLabs at the moment, where I answered that question the MDN documentation page doesn't have this information.
– Gregor Doroschenko
Nov 20 '18 at 15:21


















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.





Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


Please pay close attention to the following guidance:


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f48685569%2fsending-body-in-httpclient-delete-method-angular-5%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

"Incorrect syntax near the keyword 'ON'. (on update cascade, on delete cascade,)

Alcedinidae

RAC Tourist Trophy