2012-09-11 33 views
20

WebClient kullanarak bir konsol uygulamasından çağrılan basit bir Restful hizmetim var. Sil için bu çağrının doğru olup olmadığını merak ediyorum.WebClient restful Sil

url benziyor localhost/RestService1/Kişi/1

using (var client = new WebClient()) 
{ 
    client.UploadString(url, "DELETE", ""); 
} 

O UploadString veri parametresi olmadan aşırı yüklenmeye yok değilmiş gibi. Boş bir parametrenin geçirilmesi benimle iyi oturmuyor. "DELETE" için daha iyi bir yöntem var mı?

WebRequest'i kullanabilirim ancak tutarlı tutmak için WebClient'i kullanmak istiyorum. İşte

var request = WebRequest.Create(url); 
request.Method = "DELETE"; 
var response = (HttpWebResponse)request.GetResponse(); 

Hem bloklar iyi çalışır ancak en iyi olanı WebRequest bloktur? Yoksa daha iyi bir yolu var mı?

+0

Ayrıca bakınız: http://stackoverflow.com/questions/2539394/rest-http-delete-and-parameters –

+0

ayrıca bkz: http: // stackoverflow. com/questions/512279/restful-delete-strategy –

+0

Bu referanslarda DELETE ve RESTful ile ilişkisi dışında, 'WebClient' gerçekten DELETE'nin semantiklerini verdiğimi sanmıyorum. '' Webclient' sadece '' WebRequest'' ('HttpWebRequest') kapakların altında kullanır, bu yüzden 'HttpWebRequest' kullanarak daha doğrudan okunabilir olduğunu düşünüyorum. –

cevap

3

WebClient sınıfı, dinlendirici api tüketimine gerçekten iyi bir şekilde borç vermez, geçmişte bu tür web isteklerine daha uygun olacak şekilde RestSharp gibi üçüncü taraf kitaplıklarını kullandım. Eminim RestSharp sadece kapaklar altında HttpWebRequest kullanıyor, ancak geri kalan kaynakları daha kolay tüketen ve yeniden kullanan bir çok semantik sağlıyor.

+0

Newtonsoft Json ile WebClient kullanıyorum ve kullanımı çok basit. RestSharp'a bakacağım. Teşekkürler –

3

Git Microsoft.Net.Http istemci kütüphaneleri http://nuget.org/packages/Microsoft.Net.Http

HttpClient bir API ile çalışmak için kullanmak için çok daha iyi istemcisidir olsun. Benim için

+0

Bu paket Visual Studio 2010'da desteklenmez ve yalnızca bu paketi kullanan bir kitaplığı tüketirken .NET Framework 4.5 veya .NET for Windows Store uygulamaları hedefleyen projeler için gereklidir. – juFo

+0

@juFo VS2010 ve .net 4.0'da desteklenir. Aksini neden düşünürsün bilmiyorum. –

+0

Sadece sağladığınız bağlantıyı alıntıladım: http://nuget.org/packages/Microsoft.Net.Http – juFo

10

aşağıdaki çalışır:

client.UploadValues(url, "DELETE", new NameValueCollection()); 
+0

Ve ek parametreler (örneğin, api_key) sağlamanız gerekiyorsa, bunları URL'de sorgu dizesi aracılığıyla sağlayabilirsiniz. – MattGerg