Presentacion de la idea de hoy
Cuando desarrollas aplicaciones que requieren la conversión de divisas, una de las mayores dificultades suele ser encontrar una API gratuita que no requiera registro o autenticación mediante API keys. Afortunadamente, ExchangeRate-API es una opción que permite acceder a tipos de cambio de monedas actualizados sin complicaciones adicionales, y su uso es bastante sencillo.
En este artículo, te mostraremos cómo consultar el cambio de divisas utilizando C# y la biblioteca nativa System.Text.Json para procesar la respuesta de la API. Esta integración es ideal si quieres mantener tu proyecto ligero y evitar dependencias adicionales como Newtonsoft.Json.
Estructura de la API
La API
ExchangeRate-API permite consultar los tipos de cambio de una moneda base y obtener los valores para varias monedas de destino en un solo llamado. La respuesta es un
JSON con la siguiente estructura:
{
"base": "USD",
"date": "2024-10-30",
"rates": {
"EUR": 0.95,
"GBP": 0.83,
"JPY": 149.25,
...
}
}
En este JSON:
- "base": indica la moneda de referencia.
- "rates": contiene un diccionario con las tasas de cambio para varias monedas.
Código en C# para Obtener el Cambio de Divisas
Aquí tienes un ejemplo práctico en C# que hace uso de la API y deserializa la respuesta usando
System.Text.Json.Esta clase se utilizara para deserilizizar la respuesta de la api a un objeto C#.
public class ExchangeRateData
{
public string Base { get; set; }
public DateTime Date { get; set; }
public System.Collections.Generic.Dictionary Rates { get; set; }
}
Y este sería un ejemplo de uso en una función para obtener sólamente el tipo de cambio a utilizar.
using System;
using System.Net.Http;
using System.Text.Json;
using System.Threading.Tasks;
public async Task ChangeCurrency(string baseCurrency = "USD", string targetCurrency = "EUR")
{
string baseUrl = "https://api.exchangerate-api.com/v4/latest/";
string apiUrl = $"{baseUrl}{baseCurrency}";
decimal exchangeRate = 1;
using HttpClient client = new HttpClient();
try
{
using HttpResponseMessage response = await client.GetAsync(apiUrl);
response.EnsureSuccessStatusCode();
var deserializeOptions = new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true
};
ExchangeRateData responseBody = await response.Content.ReadFromJsonAsync(deserializeOptions);
exchangeRate = jsonData.Rates[targetCurrency];
Console.WriteLine($"1 {baseCurrency} = {exchangeRate} {targetCurrency}");
}
catch (HttpRequestException e)
{
Console.WriteLine($"Error en la solicitud HTTP: {e.Message}");
}
return exchangeRate;
}
Explicación del Código
- Construcción de la URL: La URL se forma combinando la URL base de la API con la moneda base (USD en este caso).
- Solicitud HTTP GET: Usamos HttpClient para realizar una solicitud GET a la API.
- Deserialización de JSON: Utilizamos System.Text.Json para convertir el contenido JSON en un objeto C# (ExchangeRateData).
- Lectura del Tipo de Cambio: Accedemos a la tasa de cambio específica mediante la clave de la moneda en el diccionario Rates.
Como puedes comprobar el método necesita 2 parámetros de entrada, debes de consultar la documentación de la API para saber qué tipo de divisas se pueden consultar, pero ya te aviso que prácticamente son todas.
Resultado Esperado
Al ejecutar este método, deberías ver una salida en la consola similar a esta:
1 USD = 0.95 EUR
Esto obvio es una simulación, dependerá del tipo de cambio que exista en el momento de hacer la llamada a la API.
Si ocurre algún error (como un problema de conexión o una respuesta inválida de la API), el bloque catch mostrará un mensaje con la descripción del error.
Conclusión
Usar
ExchangeRate-API para obtener tasas de cambio en C# es muy sencillo y no requiere configuraciones complicadas ni claves de API. Esta solución es perfecta para proyectos pequeños que necesitan consultar el valor de monedas en tiempo real sin costo adicional. Además, utilizar
System.Text.Json te permite mantener el proyecto ligero y eficiente sin dependencias externas.
Si quieres ver un ejemplo de uso en una aplicación publicada, puedes acceder a esta página y pulsar sobre el boton de la divisa, como puedes ver hay muchas, muchisimas divisas a seleccionar.