HTTP Post Angular 中没有正文

HTTP Post with no body in Angular

我想知道如何发送没有正文的 HTTP post 请求(特别是在 Angular 中)。这是我现在正在做的,但我收到错误 Expected 2-3 arguments, but got 1)

我知道第二个参数是针对正文的,但我没有将其发送到服务器(是的,我知道 POST 调用会更改系统状态并研究了 THIS问题)。

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

看起来这是合适的答案:

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

如果 null 不工作(客户端 4XX 错误),尝试 {} JSON:

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

使用您的 IDE 转到 POST 方法的定义,您可以看到传递 body: any | null 是可用的输入

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

尝试在不传递 'body' 的情况下调用 HTTP 'Post',并在 Angular 6 -

中出现此错误

如果我们转到 client.d.ts 中 POST 方法的定义,它表明 post 方法需要 'body'或 'null' 值(例如 - body: any | null)-

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

解决方案-我刚刚添加了'null'并且错误消失了-

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