Cómo consumir una API web ASP.NET Core con RestSharp

REST es un acrónimo de Representational State Transfer, un estilo arquitectónico que se ha vuelto extremadamente popular en los últimos años. Una API RESTful es aquella que se construye de acuerdo con los principios y pautas de REST. Las API RESTful generalmente devuelven texto sin formato, JSON o XML como respuesta.

RestSharp es una biblioteca cliente HTTP de código abierto que facilita el consumo de servicios RESTful. RestSharp proporciona una interfaz amigable para el desarrollador para trabajar con servicios RESTful mientras abstrae las complejidades internas de trabajar con solicitudes HTTP. RestSharp admite solicitudes tanto síncronas como asincrónicas.

Este artículo presenta una discusión sobre cómo podemos trabajar con RestSharp para consumir servicios creados con ASP.NET Core.

Para trabajar con los ejemplos de código de este artículo, debe tener Visual Studio 2019 instalado en su sistema. Si aún no tiene una copia, puede descargar Visual Studio 2019 aquí. 

Crear un proyecto de API ASP.NET Core

En primer lugar, creemos un proyecto ASP.NET Core en Visual Studio. Suponiendo que Visual Studio 2019 esté instalado en su sistema, siga los pasos que se describen a continuación para crear un nuevo proyecto ASP.Net Core en Visual Studio.

  1. Inicie el IDE de Visual Studio.
  2. Haga clic en "Crear nuevo proyecto".
  3. En la ventana "Crear nuevo proyecto", seleccione "Aplicación web ASP.NET Core" de la lista de plantillas que se muestra.
  4. Haga clic en Siguiente.
  5. En la ventana "Configure su nuevo proyecto", especifique el nombre y la ubicación del nuevo proyecto.
  6. Haga clic en Crear.
  7. En la ventana "Crear nueva aplicación web ASP.Net Core", seleccione .NET Core como tiempo de ejecución y ASP.NET Core 2.2 (o posterior) de la lista desplegable en la parte superior. Usaré ASP.NET Core 3.0 aquí.
  8. Seleccione "API" como la plantilla de proyecto para crear una nueva aplicación ASP.NET Core API. 
  9. Asegúrese de que las casillas de verificación "Habilitar compatibilidad con Docker" y "Configurar para HTTPS" no estén marcadas, ya que no usaremos esas funciones aquí.
  10. Asegúrese de que la autenticación esté configurada como "Sin autenticación", ya que tampoco usaremos autenticación.
  11. Haga clic en Crear. 

Si sigue estos pasos, se creará un nuevo proyecto de API de ASP.NET Core en Visual Studio. Luego, seleccione la carpeta de la solución Controladores en la ventana Explorador de soluciones, haga clic en "Agregar -> Controlador ..." y seleccione "Controlador API con acciones de lectura / escritura". Nombre este nuevo controlador DefaultController.

Usaremos este proyecto en las siguientes secciones de este artículo.

Implementar DefaultController en ASP.NET Core API

Abra el archivo DefaultController.cs y reemplace el código que contiene con el que se indica a continuación:

utilizando Microsoft.AspNetCore.Mvc;

utilizando System.Collections.Generic;

espacio de nombres RESTAPIDemo.Controllers

{

    [Ruta ("api / [controlador]")]

    [ApiController]

    clase pública DefaultController: ControllerBase

    {

        Autores del diccionario de solo lectura privado = nuevo Diccionario ();

        public DefaultController ()

        {

            autores.Añadir (1, "Joydip Kanjilal");

            autores.Añadir (2, "Steve Smith");

            autores.Añadir (3, "Michele Smith");

        }

        [HttpGet]

        Lista pública Get ()

        {

            List lstAuthors = new List ();

            foreach (KeyValuePair keyValuePair en autores)

                lstAuthors.Add (keyValuePair.Value);

            return lstAuthors;

        }

        [HttpGet ("{id}", Name = "Get")]

        cadena pública Get (int id)

        {

            devolver autores [id];

        }

        [HttpPost]

        Publicación vacía pública (valor de cadena [FromBody])

        {

            autores.Añadir (4, valor);

        }

        [HttpPut ("{id}")]

        public void Put (int id, [FromBody] valor de cadena)

        {

            autores [id] = valor;

        }

        [HttpDelete ("{id}")]

        public void Delete (int id)

        {

            autores.Remove (id);

        }

    }

}

Consulte la clase DefaultController anterior. Tenga en cuenta que esta clase contiene métodos de acción correspondientes a cada uno de los verbos HTTP GET, POST, PUT y DELETE. En aras de la simplicidad, usamos un diccionario aquí para almacenar y recuperar datos. Puede probar esta API utilizando su navegador web o herramientas como Postman o Fiddler. Tenga en cuenta que he codificado la ID en el método HttpPost solo por simplicidad. Debe implementarlo a su manera para generar una clave única.

Hasta aquí todo bien. En las siguientes secciones, aprenderemos cómo trabajar con RestSharp para consumir la API que hemos creado.

Crea el cliente para consumir la API

Usaremos una aplicación de consola como cliente para consumir la API que creamos anteriormente. Suponiendo que Visual Studio 2019 esté instalado en su sistema, siga los pasos que se describen a continuación para crear un nuevo proyecto de aplicación de consola .NET Core en Visual Studio.

  1. Inicie el IDE de Visual Studio.
  2. Haga clic en "Crear nuevo proyecto".
  3. En la ventana "Crear nuevo proyecto", seleccione "Aplicación de consola (.NET Core)" en la lista de plantillas que se muestran.
  4. Haga clic en Siguiente.
  5. En la ventana "Configure su nuevo proyecto" que se muestra a continuación, especifique el nombre y la ubicación del nuevo proyecto.
  6. Haga clic en Crear.

Eso es todo lo que tenemos que hacer para crear un nuevo proyecto de aplicación de consola .NET Core.

Instale el paquete RestSharp NuGet

Para trabajar con RestSharp, debe instalar el paquete RestSharp de NuGet. Puede hacerlo a través del Administrador de paquetes NuGet dentro del IDE de Visual Studio 2019, o ejecutando el siguiente comando en la Consola del Administrador de paquetes NuGet:

Instalar paquete RestSharp

Consumir la API de ASP.NET Core con RestSharp

Una vez que haya instalado RestSharp en su proyecto, puede comenzar a usarlo. Primero, deberá crear una instancia de RestClient. El siguiente fragmento de código muestra cómo puede crear una instancia e inicializar la clase RestClient. Tenga en cuenta que estamos pasando la URL base al constructor de la clase RestClient.

Cliente RestClient = new RestClient ("// localhost: 58179 / api /");

A continuación, debe crear una instancia de la clase RestRequest pasando el nombre del recurso y el método que se utilizará. El siguiente fragmento de código muestra cómo se puede lograr.

RestRequest request = new RestRequest ("Predeterminado", Method.GET);

Por último, debe ejecutar la solicitud, deserializar la respuesta y asignarla a un objeto según corresponda, como se muestra en el fragmento de código que se proporciona a continuación.

IRestResponse
   
     respuesta = cliente.Ejecutar
    
     (solicitud);
    
   

La siguiente es la lista de códigos completa para su referencia.

usando RestSharp;

usando el sistema;

utilizando System.Collections.Generic;

espacio de nombres RESTSharpClientDemo

{

    programa de clase

    {

        cliente RestClient estático privado = nuevo

        RestClient ("// localhost: 58179 / api /");

        static void Main (cadena [] argumentos)

        {

            RestRequest request = new RestRequest ("Predeterminado",

            Method.GET);

            IRestResponse respuesta =

            cliente.Ejecutar (solicitud);

            Console.ReadKey ();

        }

    }

}

Para realizar una solicitud POST usando RestSharp, puede usar el siguiente código:

RestRequest request = new RestRequest ("Predeterminado", Method.POST);

request.AddJsonBody ("Robert Michael");

var respuesta = cliente.Execute (solicitud);

RestSharp está disponible en varias plataformas .NET, que es una de las razones por las que es tan popular. La capacidad de deserialización automática de RestSharp también es digna de mención. Puede obtener más información sobre RestSharp en GitHub.