Body Of Http.DELETE Request In Angular2
Answer :
The http.delete(url, options)
does accept a body. You just need to put it within the options object.
http.delete('/api/something', new RequestOptions({ headers: headers, body: anyObject }))
Reference options interface: https://angular.io/api/http/RequestOptions
UPDATE:
The above snippet only works for Angular 2.x, 4.x and 5.x.
For versions 6.x onwards, Angular offers 15 different overloads. Check all overloads here: https://angular.io/api/common/http/HttpClient#delete
Usage sample:
const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json', }), body: { id: 1, name: 'test', }, }; this.httpClient .delete('http://localhost:8080/something', options) .subscribe((s) => { console.log(s); });
You are actually able to fool Angular2 HTTP
into sending a body
with a DELETE
by using the request
method. This is how:
let body = { target: targetId, subset: "fruits", reason: "rotten" }; let options = new RequestOptionsArgs({ body: body, method: RequestMethod.Delete }); this.http.request('http://testAPI:3000/stuff', options) .subscribe((ok)=>{console.log(ok)});
Note, you will have to set the request method in the RequestOptionsArgs
and not in http.request
's alternative first parameter Request
. That for some reason yields the same result as using http.delete
I hope this helps and that I am not to late. I think the angular guys are wrong here to not allow a body to be passed with delete, even though it is discouraged.
In Angular 5, I had to use the request method instead of delete to send a body. The documentation for the delete method does not include body, but it is included in the request method.
import { HttpClient } from '@angular/common/http'; import { HttpHeaders } from '@angular/common/http'; this.http.request('DELETE', url, { headers: new HttpHeaders({ 'Content-Type': 'application/json', }), body: { foo: bar } });
Comments
Post a Comment