Angular 2 Http 删除与 Web API REST 一起使用的标头

Posted

技术标签:

【中文标题】Angular 2 Http 删除与 Web API REST 一起使用的标头【英文标题】:Angular 2 Http delete with Headers for consuming with Web API REST 【发布时间】:2017-04-09 03:50:50 【问题描述】:

我使用 Angular 2 Release 并使用来自 @angular/http 的 Http 和 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 方法“删除”。

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

[HttpDelete]
public Task<HttpResponseMessage> Delete(int id)

    //..

谢谢你的帮助,问候!!

【问题讨论】:

你在客户端传递的 url 和服务器端的路由是什么? 我也猜这可能是一些 url 错误。确保您调试并查看删除的 url 是否正确。另外,您的 api 在 .net 核心中吗? localhost:4200/api/user 它是 .net 核心中的 API REST。 有人能找到问题吗? 【参考方案1】:

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

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());

【讨论】:

【参考方案2】:

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

您必须像这样发送一个 OPTION 响应标头:

Access-Control-Allow-Methods: DELETE

在这里阅读更多: CORS support for PUT and DELETE with ASP.NET Web API

【讨论】:

【参考方案3】:

我使用自定义 httpService 扩展自 http 并且遇到了一些问题,我只是更改了 url 字符串,这对我有用:

this.httpService.delete(`$API_URLFavorites/$id`)

【讨论】:

以上是关于Angular 2 Http 删除与 Web API REST 一起使用的标头的主要内容,如果未能解决你的问题,请参考以下文章

角 5; asp.net web api http.delete 不起作用

Angular 2 http.post 不适用于 web api

typescript Angular 2应用程序角色访问装饰器,包装内置CanAccess功能。当用户角色不是ap时,防止视图转换

使用 Angular 2 Http 从 REST Web 服务获取数据

Dart 的 Web 组件与 Angular 的指令

Web 的材料组件与 Angular 材料 2 [关闭]