如何添加一个体到Angular HttpClient删除函数

Hon*_* Du 33 angular angular-httpclient

我们的项目正在迁移到Angular4,并@angular/common/http Httpclient用作默认的网络工具.但我发现body删除功能中没有参数.如何添加正文以删除功能?谢谢.

And*_*nyk 62

您可以request在HttpClient类上使用通用方法.此方法具有选项中的正文. https://angular.io/api/common/http/HttpClient#members

例如 this.http.request('delete', 'url', { body: ... })

  • 人们可能想知道为什么我们必须这样做. (3认同)
  • @StefanFalk 这就是我的观点。“直观”的接口都是 RESTful 的,其他一切都是可能的,但只有使用丑陋/不太直观的 `this.http.request()` 方法。就像 Angular 在说“如果你想要漂亮的、可读的代码,你必须在后端使用 RESTful”。 (2认同)

Nas*_*tad 15

const httpOptions = {
    headers: new HttpHeaders({ 'Content-Type': 'application/json' }), body: your body data
};


return new Promise(resolve => {
    this.httpClient.delete(URL, httpOptions)       
                   .subscribe(res => {     
                       resolve(res);
                   }, err => {               
                       resolve(err);
                   });
    });
Run Code Online (Sandbox Code Playgroud)

通过使用httpOptions,您可以在其中设置标题和正文.请参考https://angular.io/tutorial/toh-pt6#delete-a-hero

  • 不确定你使用的是什么版本的Angular,但这在使用HttpClient的Angular 5中不起作用.打字文件表明身体不存在.你需要使用`this.http.request` - /sf/answers/3242180021/ (6认同)

小智 2

我也遇到这个问题,我的解决方案是创建一个新HttpRequest的删除方法,然后克隆此请求,用您的数据重置其正文。

let req = new HttpRequest('DELETE', 'url');
let newReq = req.clone({body: [10]});
this.http.request(newReq).subscribe((res) => {
    console.log(res);
}, (err) => {
    console.log(err);
});
Run Code Online (Sandbox Code Playgroud)

clone()必需的,因为主体仍然不能直接设置在 中 new HttpRequest()