Usando Refit para servicios Restful en Xamarin Forms
Al desarrollar una aplicación es muy probable que gran parte de sus funcionalidades requiera interacción con un servicio web. Podemos utilizar diferentes herramientas para conectar y recuperar datos de dichos servicios, en este caso aprenderemos cómo hacerlo usando Refit y lo dividiremos en los siguientes puntos:
🔹 Cosas que necesitas saber
🔹 ¿Qué es Refit?
🔹 Implementando Refit
▪ Creando el Modelo
▪ Creando la interfaz (Entendiendo su estructura y envio (o no) de parámetros)
▪ Creando el Request (Comprendiendo su estructura y recibiendo parámetros (o no) a travez de el.)
Primero que nada … ¿Qué necesito saber? 🤔
Para comenzar con este artículo necesitamos conocer el significado de algunos términos importantes que utilizaremos a lo largo del mismo:
➖¿Qué es un servicio web RestFul?
Es un servicio ligero, mantenible y escalable que se basa en la arquitectura REST. Exponiendo el API de su aplicación de manera segura y uniforme. El cliente que realiza la llamada puede realizar operaciones predefinidas utilizando el servicio Restful. El protocolo subyacente para REST es HTTP. REST significa Transferencia de Estado representativa. Puedes leer más información aquí.
➖¿Qué es un EndPoint?
Es una URL que nos ofrece una ubicación a la que el cliente puede acceder a los diferentes recursos proporcionados por el servicio.
¡Empecemos!
¿Qué es Refit?
Refit es una biblioteca de código abierto creada por Anais Betts. Dicha librería nos permite consumir servicios web REST, convirtiendo un API REST en una interfaz en vivo y lo más importante es que nos permite mantener nuestro código limpio y legible, por lo tanto, facilita su mantenimiento. Puedes profundizar el tema aquí.
Implementando Refit
Para comenzar la explicación utilizaremos un servicio web en el que podremos interactuar con el historial de combustibles proporcionado por Steven Checo.
⚠ En este artículo desarrollaremos diferentes ejemplos de código, algunos de ellos solo están allí para lograr una mejor compónsion de la explicación, como ejercicio desarrollaremos la implementación del servicio web pero solo usaremos algunos de los ejemplos de código, para que sepa cuáles son y poder completarlos puedes identificarlos cuando los vea marcados con la estrella. ⭐
Agrega el siguiente NuGet Package:
Trabajaremos con el siguiente servicio:
http://www.apidashboard.somee.com/api/fuels
Primer paso 1⃣: Creando el Modelo
Para crear nuestra clase Modelo podemos hacerlo de dos maneras:
🔹 Identifica los atributos manualmente y cree la clase.
🔹 Puedes hacerlo automáticamente: (¡Esto es más rápido, lo recomiendo! 💪)
➖ 1. En tu Visual Studio ve a: Edit -> Paste Especial -> Paste JSON As Classes.
➖ 2. Si te falta alguna actualización y no puedes ver la opción anterior, ¡Puedes hacerlo de otra forma! Solo tienes que acceder al siguiente enlace http://json2csharp.com/ y luego agregar la URL de tu servicio web y hacer clic en el botón Generar.
⚠ Agregué esta herramienta pero puedes usar cualquier otra con la que te sientas cómod@ para crear tus entidades.
⭐ Luego agrega la clase generada a tu proyecto:
Segundo paso 2⃣: Creando la interfaz
Una interfaz contiene definiciones para un grupo de funcionalidades relacionadas que una clase no abstracta o una estructura deben implementar. Puedes leer más información aquí.
Get Leomaris Reyes’s stories in your inbox
Join Medium for free to get updates from this writer.
Para hacer posible la interacción con el servicio web, necesitamos construir una interfaz la cual debe contar con una estructura como esta:
⭐ Implementación de código (Este no necesita parámetros):
En este paso es donde hacemos la llamada de servicio, en el método de Request es donde debemos establecer los parámetros que nuestro EndPoint necesita en caso de requerirlos, de lo contrario simplemente dejamos la URL relativa. (Como vimos en el ejemplo de código anterior)
➖ Ahora veamos cómo pasar parámetros:
Tenemos dos formas de hacerlo: Query string o Body. Ambos usan la misma estructura que se muestra arriba, solo que recibirá parámetros en su estructura.
✔. Query string:
🔗Paso 1⃣ –En el método del Request (En este caso GET) agrega el parámetro que necesitas: Por ejemplo: Description={description}
🔗Step 2⃣ — Dentro del método de interfaz agrega tantos parámetros como hayas agregado en el paso anterior. Por ejemplo: string description
¡Información importante! En ocasiones el nombre del parámetro puede no tener una descripción estrechamente relacionada con lo que hace 😅 ¡Para esto puede usar alias!
Para lograrlo solo tienes que agregar: [AliasAs (“El nombre que deseas”)] siguiendo del tipo y el nombre del parámetro:
✔. O con el Body:
Podemos enviar la solicitud como contenido JSON o como una publicación de formulario.
🔗JSON Content: Necesitamos agregar el atributo [Body] seguido de la clase que declaramos en el Modelo. (Por ejemplo: [Body] Fuels fuel). Que serializará o deserializará el JSON a esta clase internamente.
🔗 Form post: Seguido al [Body] agrega el BodySerializationMethod.UrlEncoded.
⚠ Actualmente, el EndPoint no recibe estos parámetros, solo se hacen para la explicación del tema.
Tercer paso 3⃣: Haciendo el Request
Antes de crearlo es muy importante comprender la estructura que nos permitirá llamar a la acción. 💪🏼
⭐ Y ahora estamos listos! Esta es la implementación del código:
Aquí es donde hacemos la comunicación final con EndPoint y debemos tener en cuenta si la interfaz requiere parámetros o no, si no es así, puedes implementar el ejemplo de código anterior. Pero si necesita parámetros, debes crear el método de la siguiente manera:
✔ Si envíaste los parámetros como Query string: Dentro del método creado previamente desde la interfaz (GetFuels) simplemente agrega el parámetro necesario en este caso la Descripción.
✔ O por Post Form: Dentro del método GetFuels, agrega el modelo de clase que necesitas pasar.
¡Listo! ¡Tienes los datos de tu servicio web en tu proyecto!
Recuerda que dado a que el servicio web que estamos utilizando en esta publicación no contiene los EndPoints que aceptan parámetros, utilizamos algunos ejemplos ficticios de EndPoint con el objetivo de la mejor comprensión posible del tema, por esta razón, desarrollé el ejemplo que se muestra solo con los ejemplos de código marcados con la estrella para obtener un resultado real del API real. ⭐
¡Adicional!
Si quieres aprender a construir tu primer Api Rest te recomiendo este artículo de Leslie Ramirez:
¡Buena suerte con tu implementación!
¡Gracias por leer mi artículo!!! 💚
Artículo en inglés: https://askxammy.com/using-refit-to-consume-restful-web-service-in-xamarin-forms/
Referencias:
https://xamgirl.com/consuming-a-restful-web-service-in-xamarin-forms-using-refit-part-1/
https://somostechies.com/consumiendo-servicios-rest-con-refit/









