2012-09-11 10 views
20

Ho un semplice servizio Restful che viene chiamato da un'app console, quindi sto utilizzando WebClient. Mi chiedo se questa richiesta di cancellazione sia corretta.WebClient restful Elimina

L'url sembra localhost/RestService1/Persona/1

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

Non mi piace che UploadString non ha un sovraccarico senza un parametro di dati. Il passaggio di un parametro vuoto non mi sta bene. C'è un metodo migliore da usare per un "DELETE"?

Potrei usare WebRequest ma voglio semplicemente usare WebClient per mantenerlo coerente.

Ecco il blocco WebRequest

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

Entrambi i blocchi funzionano bene, ma che cosa è meglio? O c'è un modo migliore?

+0

Vedi anche: http://stackoverflow.com/questions/2539394/rest-http-delete-and-parameters –

+0

vedi anche: http: // StackOverflow. it/questions/512279/restful-delete-strategy –

+0

Oltre alla relazione con DELETE e RESTful in quei riferimenti, non penso che 'WebClient' ti dia veramente la semantica di DELETE. 'Webclient' usa solo' WebRequest' ('HttpWebRequest') sotto le copertine, quindi penso che l'uso di' HttpWebRequest') direttamente sia più leggibile. –

risposta

3

La classe WebClient in realtà non si presta bene al consumo di API riposante, ho usato librerie di terze parti come RestSharp in passato che sono orientate più verso questo tipo di richiesta web. Sono abbastanza sicuro che RestSharp usi solo HttpWebRequest sotto le copertine, ma fornisce molta semantica che facilita il consumo e il riutilizzo delle risorse di riposo.

+0

Sto usando WebClient con Newtonsoft Json ed è molto semplice da usare. Vedrò RestSharp. Grazie –

3

andare a prendere le librerie client Microsoft.Net.Http http://nuget.org/packages/Microsoft.Net.Http

HttpClient è un client molto meglio utilizzare per lavorare con un API.

+0

Questo pacchetto non è supportato in Visual Studio 2010 ed è richiesto solo per i progetti destinati a .NET Framework 4.5 o .NET per le app di Windows Store quando si utilizza una libreria che utilizza questo pacchetto. – juFo

+0

@juFo È supportato in VS2010 e in .net 4.0. Non sono sicuro del perché tu penseresti diversamente. –

+0

Ho appena citato il link che hai fornito: http://nuget.org/packages/Microsoft.Net.Http – juFo

10

le seguenti opere per me:

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

E se è necessario fornire parametri aggiuntivi (ad esempio api_key), è possibile fornire tramite stringa di query nell'URL. – MattGerg