Reputation:
I'm trying to talk to a somewhat REST API from an Angular 7 front end.
To remove some item from a collection, I need to send some other data in addition to the remove unique id, namely an authentication token, some collection info and some ancillary data.
However, the Http module of Angular 7 doesn't quite approve of a DELETE request with a body, and trying to make this request.
Here is my api:
DELETE /user/verifications
body {
"doc_type": "govt_id",
"doc_id": "5beedd169db947867b710afd"
}
Upvotes: 8
Views: 23058
Reputation: 3236
Using http.delete
didn't work for me on angular6, nor angular9. I had to use this.http.request('delete', url, options)
instead.
Also, Typescript seems to have some issue about typing the response, so I had to force the result type manually with the map
operator:
const httpOptions: any = {
headers: {
'Content-Type': 'application/json'
}
};
const uri = '/path/to/delete/api';
httpOptions.body = {
prop1: value1,
prop2: value2
// ...
};
return this.http.request<string>('delete', uri, httpOptions).pipe(
map((result: any) => result as string), // fix typescript typing
tap((result: string) => {
console.log('response from server:', result);
}
);
Upvotes: 6
Reputation: 1145
this will work for angular 6+, where http is your HttpClient
const options = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
}),
body: {
name: 'ravi',
id: 'ravi123'
}
}
this.http.delete('http://localhost:8080/user', options).subscribe(s => {
console.log(s);
})
Upvotes: 27