Our project is migrating to Angular4, and use @angular/common/http Httpclient as the default network tool. But I found there are no body params in delete function. How do I add the body to delete function? Thanks.
3 Answers
You may use a universal request method on the HttpClient class instead. This method has the body in options.
https://angular.io/api/common/http/HttpClient#members
e.g
this.http.request('delete', 'url', { body: ... })
4 Comments
/clients/<id>). But real life APIs are seldom RESTful, unfortunately.this.http.delete() method that wraps this s.t. the interface gets more intuitive.this.http.request() method. It's like Angular is saying "if you want nice, readable code, you gotta go RESTful in the backend".this.http.request('DELETE', 'url', { body: ... }). In my case the uppercase method string was necessary.const httpOptions = {
headers: new HttpHeaders({ 'Content-Type': 'application/json' }), body: your body data
};
return new Promise(resolve => {
this.httpClient.delete(URL, httpOptions)
.subscribe(res => {
resolve(res);
}, err => {
resolve(err);
});
});
by using httpOptions, you can set header and body in it. please refer this https://angular.io/tutorial/toh-pt6#delete-a-hero
1 Comment
this.http.request - stackoverflow.com/a/46316857/1148107I also get this problem and my solution is creating a new HttpRequest of delete method, then clone this request, reset its body with your data.
let req = new HttpRequest('DELETE', 'url');
let newReq = req.clone({body: [10]});
this.http.request(newReq).subscribe((res) => {
console.log(res);
}, (err) => {
console.log(err);
});
The clone() is required, because the body still can not be directly set in the new HttpRequest().
http.request()like Andrii Ivanyk posted below. it was removed because the specification for Delete is unclear regarding the use of BODY in it.