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时,防止视图转换