HTTP Post with no body in Angular

Viewed 43532

I'm wondering how to send an HTTP post request without a body (specifically in Angular). Here's what I'm doing now, but I'm getting the error Expected 2-3 arguments, but got 1).

I realize the second argument is for the body, but I'm not sending that to the server (yes, I understand that a POST call changes the state of a system and have looked into THIS question).

postRequest(id) {
  this.http.post('/api?data=' + id).map(
    (response) => {
      return response;
    }
  )
}
4 Answers

If null is not working (4XX error client side), try with {} JSON:

postRequest(id) {
    this.http.post('/api?data=' + id, {}).map((response) => {return response;});
}

Go to definition of POST method using your IDE and you can see passing either body: any | null are the available inputs

post(url: string, body: any | null, options: {
    headers?: HttpHeaders | {
        [header: string]: string | string[];
    };

Try to call HTTP 'Post' without passing a 'body', and got this error in Angular 6 -

enter image description here

If we go to definition of POST method in client.d.ts, it shows that post method required either 'body' or 'null' value (e.g. - body: any | null)-

post(url: string, body: any | null, options?: {
...
}): Observable<Object>;

Solution - I just added 'null' and the error gone -

postSync(): any {
    return this.http.post(`${environment.apiUrl}/xyz/sync-api`, null);
}
Related