2012-09-11 5 views
20

Ich habe einen einfachen Restful-Service, der von einer Konsolen-App aus aufgerufen wird, also verwende ich den WebClient. Ich frage mich, ob dieser Aufruf für Löschen korrekt ist.WebClient restful Löschen

Die URL sieht aus wie localhost/RestService1/Person/1

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

Ich weiß nicht wie das UploadString nicht über eine Überlastung ohne Datenparameter. Die Weitergabe eines leeren Parameters passt nicht gut zu mir. Gibt es eine bessere Methode für ein "DELETE"?

Ich könnte WebRequest verwenden, aber ich möchte nur WebClient verwenden, um es konsistent zu halten. Hier

ist der WebRequest Block

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

Beiden Blöcke arbeiten gut, aber was ist am besten? Oder gibt es einen besseren Weg?

+0

Siehe auch: http://stackoverflow.com/questions/2539394/rest-http-delete-and-parameters –

+0

siehe auch: http: // Stackoverflow. com/questions/512279/restful-delete-strategie –

+0

Abgesehen von der Beziehung zu DELETE und RESTful in diesen Referenzen, glaube ich nicht, dass 'WebClient' Ihnen wirklich die Semantik von DELETE gibt. 'Webclient' verwendet nur' WebRequest' ('HttpWebRequest') unter den Deckblättern, so denke ich, dass' HttpWebRequest' direkt lesbarer ist. –

Antwort

3

Die WebClient-Klasse eignet sich nicht wirklich für einen ruhigen API-Verbrauch, ich habe in der Vergangenheit 3rd-Party-Bibliotheken wie RestSharp verwendet, die mehr auf diese Art von Web-Anfrage ausgerichtet sind. Ich bin mir ziemlich sicher, dass RestSharp nur HttpWebRequest unter den Deckeln verwendet, aber es bietet eine Menge an Semantiken, die es einfacher machen, Restressourcen zu nutzen und wiederzuverwenden.

+0

Ich benutze WebClient mit Newtonsoft Json und es ist sehr einfach zu verwenden. Ich werde in RestSharp schauen. Thanks –

3

erhält Go die Microsoft.Net.Http Client-Bibliotheken http://nuget.org/packages/Microsoft.Net.Http

Httpclient ist ein viel besserer Client mit einer API für die Arbeit zu nutzen.

+0

Dieses Paket wird in Visual Studio 2010 nicht unterstützt und ist nur für Projekte erforderlich, die auf .NET Framework 4.5 oder .NET für Windows Store-Apps abzielen, wenn eine Bibliothek mit diesem Paket verwendet wird. – juFo

+0

@juFo Es wird in VS2010 und in .net 4.0 unterstützt. Ich bin mir nicht sicher, warum du anders denken würdest. –

+0

Ich zitierte nur den Link, den Sie zur Verfügung gestellt: http://nuget.org/packages/Microsoft.Net.Http – juFo

10

Die folgenden Werke für mich:

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

Und wenn Sie zusätzliche Parameter (z. B. api_key) bereitstellen müssen, können Sie sie über Abfragezeichenfolge in der URL bereitstellen. – MattGerg