Escribirán un pequeño servicio web que se pueda consultar a través de un REST API, a su vez este servicio web tiene que consumir al menos 2 otros REST APIs de cualquier fuente que le interese ustedes.
Su servicio/API debe de permitir un mínimo de una consulta que resulte de mezclar la información de o acciones de los 2 (o más) APIs que estén utilizando.
Las pruebas realizadas en este proyecto fueron hechas bajo un sistema con las siguientes características:
- S.O. -> Linux Ubuntu 20.04
- Go -> 1.16.6
go mod init master.project/go
go get -u gorm.io/gorm
go get -u gorm.io/driver/sqlite
go run main.go
El head de API es https://api.coingecko.com/api/v3/, donde se puede notar que la API de coingecko esta en su versión número 3.
Esta consulta retorna un listado de diccionarios con todos las monedas incluídas en coingecko. Al ser bastante pesada por la magnitud de los datos suele tardarse, por lo que se considera grabar la información en una base local y utilizarla cada día para actualizar la información de ser necesario.
Esta API no entrega información relevante más allá de nombre, símbolo y id de la moneda.
Para actualizar la base de datos se puede acceder al endpoint
localhost:9000/updatedatabase
Se tardará un rato hasta descargar la informacion y luego agregarla crear la nueva base de datos con la informacion actualizada.
Esta consulta trae un listado de todas las moendas validas para intercambios.
Se la utiliza para en conjunto a coins/list para actualizar base de datos de valores que se utilizan en la aplicación.
localhost:9000/updatedatabase
Este endpoint trae la conversion entre una moneda y una de las posibles conversiones simples. Este endpoint es usado en:
http://localhost:9000/exchange?coin1=COIN1&coin2=COIN2&mid=USD
donde coin1 es la moneda que se desea intercambiar, coin2 la moneda a la que se desea cambiar, y mid es la moneda intermedia.
ej:
http://localhost:9000/exchange?coin1=bitcoin&coin2=ethereum&mid=usd
Aquí se puede apreciar la forma de hacer el cambio de un bitcoin a ethereum considerando el precio de USD.
Estos cambios intermedios suelen darse en las casas de cambios por la volatilidad de las monedas frente a una moneda más estable. En ciertos casos puede ser mejor hacer cambio directo, que pasar por una moneda. Otro extra es que el doble cambio esta sujeto a la demanda y oferta de dos monedas, mientras que la directa solo de una, así mismo los costos de intereses por intercambio solo se consideraran una sola vez, y no dos. Por último, algunas casas de monedas no permiten cambios excepto si son entre las monedas habilitadas para intercambio directo, por esto la 2da consulta retorna las monedas soportadas para cambios.
una vez iniciado el servidor con ayuda de go run main.go
se puede ir a un navegador y utilizar el servidor local para ver una pagina de home
:
localhost:9000/home