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