2012-09-11 73 views
20

我有一個簡單的從控制檯應用程序調用的Restful服務,所以我使用WebClient。我想知道這個刪除電話是否正確。WebClient寧靜刪除

的URL看起來像本地主機/ RestService1 /人/ 1

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

我不喜歡UploadString沒有沒有數據參數的重載。傳遞一個空參數並不適合我。有沒有更好的方法來使用「刪除」?

我可以使用WebRequest,但我只想使用WebClient來保持一致。

這裏是WebRequest的塊

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

兩個塊做工精細,但什麼是最好的?或者,還有更好的方法?

+0

參見:http://stackoverflow.com/questions/2539394/rest-http-delete-and-parameters –

+0

還看到:HTTP://計算器。 com/questions/512279/restful-delete-strategy –

+0

除了在這些引用中與DELETE和RESTful的關係,我不認爲'WebClient'真的給你提供了DELETE的語義。 'Webclient'只是在封面下使用'WebRequest'('HttpWebRequest'),所以我認爲直接使用'HttpWebRequest')更具可讀性。 –

回答

3

WebClient類並不能很好地適應api的消耗,過去我已經使用了第三方庫,比如RestSharp,這些庫更適合這種類型的web請求。我非常確定RestSharp只是在封面下使用了HttpWebRequest,但它提供了很多使得消耗和重用rest資源更簡單的語義。

+0

我在Newtonsoft Json上使用WebClient,使用起來非常簡單。我會研究RestSharp。謝謝 –

3

去拿Microsoft.Net.Http客戶端庫http://nuget.org/packages/Microsoft.Net.Http

HttpClient的是一個更好的客戶端用於與API的工作。

+0

該軟件包在Visual Studio 2010中不受支持,只有在使用使用此軟件包的庫時,才需要針對.NET Framework 4.5或.NET for Windows應用商店應用的項目。 – juFo

+0

@juFo它在VS2010和.net 4.0中受支持。我不確定你爲什麼會這麼想。 –

+0

我剛纔引用了你提供的鏈接:http://nuget.org/packages/Microsoft.Net.Http – juFo

10

對我來說,以下工作:

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

如果您需要提供其他參數(例如api_key),您可以通過url中的查詢字符串提供它們。 – MattGerg