c# - Angular 2 Http ile Web API REST tüketimi için Header ile silme işlemi
Angular 2 sürümünü kullandım ve @angular/http'tan Http ve Headers kullanıyorum.
Silme fiilini çağırmayı deniyorum, Başlıklarla, ve diğer fiiller POST, GET ve PUT, hepsi düzgün. Ama "DELETE" ile çalışmıyor.
Benim kodum :
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());
}
Alınan yanıt: Talep edilen kaynak 'delete' HTTP yöntemini desteklemiyor.
Kontrolcümde şöyle bir şey var:
[HttpDelete]
public Task<HttpResponseMessage> Delete(int id)
{
//..
}
Yardımın için teşekkürler, selamlar !!
Cevap #1
Benim için işe yarayan çözüm, bu şekilde sorgu dizgisi kullanmaktı:
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());
}
örnek :
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());
}
Cevap #2
Sorun şu ki API sunucunuz HTTP DELETE Yöntemine izin vermek zorunda. Bir HTTP DELETE İsteği gerçekleştirdiğinizde, tarayıcınız önce sunucuya bir HTTP OPTIONS gönderir; sunucu, izin verilen yöntemlerin listesini içeren Access-Control-Allow-Methods başlığı ile yanıt verir.
Böyle bir OPTION Yanıt Başlığı göndermeniz gerekiyor:
Access-Control-Allow-Methods: DELETE
Daha fazla okumak için buraya bakın: ASP.NET Web API ile PUT ve DELETE için CORS desteği
