Angular 2 Http delete with Headers 用于使用 Web API REST

Angular 2 Http delete with Headers for consuming with Web API REST

我使用了 Angular 2 发布并使用来自 @angular/http 的 Http 和 Headers。

我尝试使用 Headers 和其他动词 POST、GET 和 PUT 调用动词删除,好吧。但是对于 "DELETE",不起作用。

我的代码:

remove(url:string, id:any) {
   let headers = new Headers();
   headers.append('Authorization': 'Bearer ' + this.token);
   return this.http.delete(url, {
        headers: headers;
        body: { id: id }
   }).map(response => response.json());
}

收到的响应是:请求的资源不支持http方法'delete'。

在我的控制器中,我有一些这样的东西:

[HttpDelete]
public Task<HttpResponseMessage> Delete(int id)
{
    //..
}

谢谢你的帮助,问候!!

对我有用的解决方案是,以这种方式使用查询字符串:

remove(urlController:string, id:any){
   let headers = new Headers();
   headers.append('Authorization': 'Bearer ' + this.token);
   return this.http.delete(urlController + '/?id=' + id, {
    headers: headers;
    }).map(response => response.json());
}

示例:

remove(urlController:string, id:any){
   let headers = new Headers();
   headers.append('Authorization': 'Bearer ' + this.token);
   return this.http.delete('users'+ '/?id=' + '2', {
    headers: headers;
    }).map(response => response.json());
}

问题是您的 API 服务器必须允许 HTTP DELETE 方法。 当您执行 HTTP DELETE 请求时,您的浏览器首先向服务器发送 HTTP OPTIONS;服务器响应 header Access-Control-Allow-Methods,其中包含允许的方法列表。

您必须像这样发送选项响应Header:

Access-Control-Allow-Methods: DELETE

在此处阅读更多内容: CORS support for PUT and DELETE with ASP.NET Web API

我使用自定义 httpService extends from http 我遇到了一些问题,我只是改变了 url 字符串,这个对我有用:

this.httpService.delete(`${API_URL}Favorites/${id}`)