consumir-un-api-rest-en-c-facilmente-con-restsharp

Consumir un API Rest en C# fácilmente con Restsharp

RestSharp es una popular librería para .Net que nos permite actuar como clientes para consumir un Api Rest.

En una entrada anterior vimos como consumir un API Rest desde C# sin emplear librerías de terceros. Aunque el código no es especialmente complejo, el uso de RestSharp simplifica sustancialmente el proceso.

Además, RestSharp aporta funciones adicionales como serialización nativa a XML o JSON, identificación del tipo de solicitud o respuesta, o autentificación (Basic, OAuth, NTLM…)

Para ilustrar su uso vamos a realizar el mismo ejemplo que en la entrada anterior, pero empleando RestSharp. El código para consumir nuestro API Rest de ejemplo en NodeJs que vimos en esta entrada sería el siguiente.

static void Main(string[] args)
{
  GetItem(10);
  GetItems();
  GetItems("ABC");
  PostItem("NewItem");
  PutItem(4, "ReplaceItem");
  DeleteItem(5);
  Console.ReadLine();
}

private static void GetItem(int id)
{
  var client = new RestClient("http://localhost:8080");
  var request = new RestRequest($"/item/{id}", Method.GET);
  var response = client.Execute(request);
  Console.WriteLine(response.Content);
}

private static void GetItems()
{
  var client = new RestClient("http://localhost:8080");
  var request = new RestRequest("items", Method.GET);
  var response = client.Execute(request);
  Console.WriteLine(response.Content);
}

private static void GetItems(string filter)
{
  var client = new RestClient("http://localhost:8080");
  var request = new RestRequest("items", Method.GET);
  request.AddParameter("filter", filter);
  var response = client.Execute(request);
  Console.WriteLine(response.Content);
}

private static void PostItem(string data)
{
  var client = new RestClient("http://localhost:8080");
  var request = new RestRequest("items", Method.POST);
  request.AddParameter("data", data);
  var response = client.Execute(request);
  Console.WriteLine(response.Content);
}

private static void PutItem(int id, string data)
{
  var client = new RestClient("http://localhost:8080");
  var request = new RestRequest("items", Method.PUT);
  request.AddParameter("id", id);
  request.AddParameter("data", data);
  var response = client.Execute(request);
  Console.WriteLine(response.Content);
}

private static void DeleteItem(int id)
{
  var client = new RestClient("http://localhost:8080");
  var request = new RestRequest($"items/{id}", Method.DELETE);
  var response = client.Execute(request);
  Console.WriteLine(response.Content);
}

Como vemos, el código desarrollado con RestSharp es mucho más conciso, sencillo y mantenible. La diferencia sería incluso mayor, si estuviéramos usando las funciones avanzadas como autentificación o serialización.

Por supuesto, si ejecutamos el código veremos en consola de comandos los mismos resultados que en la entrada anterior, demostrando que todo funciona correctamente, así cómo en la consola de NodeJs, donde vemos que las peticiones se reciben y responden adecuadamente.

esp8266-client-api-rest-nodejs

En resumen, RestSharp, una librería muy popular e interesante, que nos simplifica enormemente el trabajo como cliente con API Rest desde aplicaciones .Net.

RestSharp es Open Source, y todo su código se encuentra disponible en el siguiente enlace https://github.com/restsharp/RestSharp. Conviene consultar la abundante documentación sobre la librería en la página web del proyecto https://restsharp.dev/

Se encuentra disponible como paquete Nuget por lo que podemos añadirla cómodamente a nuestro proyecto. Está disponible para .Net Framework y .Net Standard.