Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular HttpClient删除方法中的发送主体(5)_Angular_Httpclient - Fatal编程技术网

Angular HttpClient删除方法中的发送主体(5)

Angular HttpClient删除方法中的发送主体(5),angular,httpclient,Angular,Httpclient,我正在Angular 5应用程序中将Http迁移到HttpClient,在我使用其中一个服务的方法之前,一切都很顺利: deleteMultipleObjects(userId: number, officeId : number, objectsData : any) { const url = `${APP_URL}/delete-objects/${userId}/${officeId}`; let headers = new Headers({ 'Content-Type':

我正在Angular 5应用程序中将Http迁移到HttpClient,在我使用其中一个服务的方法之前,一切都很顺利:

deleteMultipleObjects(userId: number, officeId : number, objectsData : any) {
  const url = `${APP_URL}/delete-objects/${userId}/${officeId}`;

  let headers = new Headers({ 'Content-Type': 'application/json' });

  this.appOptionsService.log("Deleting multiple objects.....", url, objectsData);

  return this.http
    .delete(url, { headers : headers, body : objectsData } )
    .map(this.extractData)
    .catch(this.handleError);
}
如您所见,我在delete调用的主体中传递了一个object
objectsData
,它基本上具有以下结构:

{
  objectIds: [id1, id2, id3, ...]
}
我看到
HttpClient
中的
delete
方法不允许包含主体,因此如何通过调用发送要删除的对象ID数组?我有很多与此相同的delete调用,因此我必须在代码中更改很多内容以适应它


谢谢

您不能在
DELETE
http请求中发送正文

MDN上的HTTP规范说这是可能的

如果需要此功能,应使用
PUT
作为解决方法。另一种方法允许删除API端点上的多个id,例如id。例如:

https://server.com/api/delete?ids=1,2,3,4,5

这需要对api进行一些更改。

删除主体方法不可取,因为许多平台已开始忽略删除主体请求。因此,如果我想一次删除多个对象,是否必须使用PUT请求而不是delete?是的。这是实现多次删除的唯一解决方法。谢谢,我会更改所有呼叫,然后。。。干杯。我更改了PUT等价项的删除请求,因此可以在调用中使用正文发送要删除的对象。HTTP DELETE可能有正文。这是一个缺失的角度特征@GlueLabs在我回答这个问题的时候,MDN文档页面没有这个信息。