【问题标题】:HTTP Post with no body in AngularAngular 中没有正文的 HTTP Post
【发布时间】:2018-05-06 14:43:22
【问题描述】:

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

我意识到第二个参数是针对正文的,但我没有将它发送到服务器(是的,我知道 POST 调用会改变系统的状态,并且已经查看了 THIS 问题)。

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

【问题讨论】:

  • 只发送一个空对象
  • 很好的答案@Antikhippe。你必须添加一个body,即使它是空的、未定义的等等。
  • 不,这实际上不是一个好的答案。传递一个空对象不会发布没有正文的请求。它将发布一个请求,其主体包含一个空的 JSON 对象 ({})。传递空值。
  • 你想用这个请求做什么?从 POST 到这条 /api?data= 路由,你对后端有什么期望?
  • @Jota.Toledo 请参阅我原帖中提到的THIS 问题。

标签: angular http typescript angular-http


【解决方案1】:

看起来这是正确的答案:

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

【讨论】:

    【解决方案2】:

    如果null 不起作用(客户端出现4XX 错误),请尝试使用{} JSON:

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

    【讨论】:

    • null 可能无法解决。我试过了,它没有解决。而且,我认为无论如何我们都需要发送 JSON。所以,它是空的 JSON 文件
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      尝试在不传递“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);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多