如何正确调用删除方法?

how can I call a delete method properly?

这实际上是我第一次尝试调用删除方法angular。 我的数据服务中的代码是:

deleteMeaningItem(data): Observable<Result> {
    return this.http.delete<Result>(url, data);
  }

在组件中:

 this.dataService.deleteMeaningItem({id: id}).subscribe(res => {
 if (res.status) {
    //do something          
  }
  });

但我收到 415 不支持的媒体类型错误! 我还尝试在我的请求 header 中发送 Content-Type,例如:

deleteMeaningItem(data): Observable<Result> {
     return this.http.delete<Result>(global.dataUrl + '/MeaningItems/Delete', { params: data,
     headers: {'Content-Type': 'application/json'}});
}

但后来我收到 400 Bad Request 错误! 我需要你的帮助。

也许使用 RXJS 更容易。

首先定义删除函数@Service

delete(id: string): Observable<Result> {
 return this.httpClient.delete<Result>(`${global.dataUrl}/MeaningItems/${id}`);
}

然后尝试这样调用它:

this.service.delete(id).pipe(
  tap(r => console.log('success', r)),
  catchError(e => {
    console.error('error', e);
    return throwError(e);
  })
).subscribe();

我猜问题可能出在 data object 中。我将首先检查 API 的文档,因为看起来您还缺少 Autorization header 等方法通常需要的 delete

我所要做的就是在请求选项中提供正文。所以我这样做了:

deleteMeaningItem(meaningId): Observable<Result> {
    const options = {
      headers: new HttpHeaders({
        'Content-Type': 'application/json',
      }),
      body: meaningId,
    };
    return this.http.delete<Result>(global.dataUrl + '/MeaningItems/Delete', options);
  }