API REST con RestSharp y Newtonsoft en C#
RestSharp es una librería muy popular para hacer peticiones HTTP desde .NET de forma sencilla, y Newtonsoft.Json (Json.NET) es la librería más utilizada para serializar y deserializar JSON. Juntas permiten consumir cualquier API REST desde una aplicación C# con muy poco código.
Instalar los paquetes
Puedes añadir ambos paquetes desde NuGet, por ejemplo con la CLI de .NET:
dotnet add package RestSharp
dotnet add package Newtonsoft.Json
Ejemplo: petición POST a una API
En este ejemplo se envía una petición POST a un endpoint de Odoo, con una cabecera Content-Type, una cookie de sesión y un cuerpo JSON, y se muestra la respuesta por consola:
var client = new RestClient("http://master.odooerp.online/api/create_fingerprint/00102815511/3/x1234567890");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "text/plain");
request.AddHeader("Cookie", "session_id=b5f563a723257c2ce7a75762c30367a38c82174e");
var body = @"{" + "\n" +
@" ""fingerprint"" : ""hasasnasaslkasasmasasasll""" + "\n" +
@"}";
request.AddParameter("text/plain", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Pasos principales:
- Se crea un
RestClientcon la URL del endpoint. - Se crea un
RestRequestindicando el método HTTP (POST). - Se añaden las cabeceras necesarias con
AddHeader. - Se adjunta el cuerpo de la petición con
AddParametercomoRequestBody. - Se ejecuta la petición con
client.Executey se leeresponse.Content.
Nota
Este código usa la API de RestSharp anterior a la versión 107 (IRestResponse, client.Timeout, Method.POST). En versiones recientes la sintaxis cambia ligeramente (por ejemplo, RestResponse y Method.Post), así que conviene revisar la versión del paquete que tengas instalada. Para deserializar la respuesta puedes usar JsonConvert.DeserializeObject de Newtonsoft sobre response.Content.