繁体   English   中英

HTTP 在 Angular 中没有正文的帖子

[英]HTTP Post with no body in Angular

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

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

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 body: any | null是可用的输入

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

尝试在不传递“正文”的情况下调用 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);
}

如果请求正文不存在用于 post 或 put 方法,则发送空的 object 到请求。 前任: {}。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM