如何在angular 2中将body传递给http delete方法

时间:2016-11-17 04:23:38

标签: angular

obj={
    "candidateFeedbackQuestionInfoId": 8
};

jsonobj=JSON.stringify(this.obj);

return this.http.delete(this.feebackUrl,this.jsonobj).map(this.extractData);

如果我们传递body来删除它会抛出类型不匹配错误,任何帮助都会很棒

4 个答案:

答案 0 :(得分:8)

delete的第二个参数是RequestOptionsArgs。所以你可以做到

this.http.delete(this.feebackUrl,{ body: this.jsonobj })

答案 1 :(得分:0)

删除通常应使用请求或URL参数。理想情况下,对象的标识符应足以删除对象。如果您正在做更多的事情,我建议您使用帖子

以下是删除API调用的Angular2代码

this.headers = new Headers({ 'Content-Type': 'application/json' });
this.options = new RequestOptions({ headers: this.headers });
return this.http.delete('/rest/batch/' + audit.timestamp.toString(), this.options)
          .map(res => res.json());

在服务器端,使用Express,您可以按如下方式接听电话

app.delete('/rest/batch/:id', function(req, res) {
  objectStore.removeBatchObject(req, res); // your code to perform operation
});

或者你可以在RequestOptions对象中传递更多参数,如果有的话你必须绕过DELETE REST API的典型结构

答案 2 :(得分:0)

到目前为止,

RequestOptionsArgsRequestOptions已被HttpClient弃用。您可以使用DELETE方法使用抽象请求方法发送JSON数据,如下所示:

deleteItem(id: string) {
    return this.http
      .request('DELETE', API_URL + '/item', { params: { sessionId: "12345"}, body: {itemId: id}})
      .map(this.getResponseData)
      .catch(this.handleError);
  }

params将是查询字符串,body将是JSON数据。

答案 3 :(得分:0)

您可以尝试使用此示例:

import { HttpHeaders } from '@angular/common/http';

const headersJson = new HttpHeaders().set('Content-Type', 'application/json');

 this.http.request("delete", APPLICATION_HOST + '/employee/delete/', 
 {  
      headers : headersJson,

      body : "{empId : 123, empname : 'jerwo'}"
  })
  .subscribe(
        res => {
     // Ok
  },

  err => 
  {

     // Error ops   

  });