Mi primer API en Golang
Mi primer API en Golang
Realice una primer “API” en golang muy simple la cual me gustaría compartir (lo más probable es que no cuente con las mejores practicas…
Mi primer API en Golang
Realice una primer “API” en golang muy simple la cual me gustaría compartir (lo más probable es que no cuente con las mejores practicas pero por lo menos tiene los requisitos mínimos para escalar en algo más evolucionado).
Código fuente
https://github.com/devjaime/golangrest
Lo primero que quería era listar los requerimientos de mi API para que sea completamente funcional para lo que necesitaba.
- - Debía ser capaz de conectarse a través de un ORM a la base de datos ya que lo más probable es que esta cambie en un futuro ( de referencia es azure sql en este momento).
- - Debe ser capaz de levantar en un contenedor y pasar por un proceso de integración continua para estar como una api publica
- .- Debe ser escalable en el tiempo en cuanto a cantidad de usuario y peticiones concurrentes.
Diagrama de diseño de la API
No quisiera entrar más en detalles pero eso es todo lo que quería implementar para la API
Lo primero que investigue fue la documentación de Golang https://golang.org/ donde lo primero es seguir muy bien las instrucciones de instalación de golang en tu maquina ya sea windows o mac https://golang.org/dl/
En mi caso cuento con mac y lo que realice fue ver si existía instalación a traves de homebrew y lo realice siguiendo unos pasos muy simples, sacados del siguiente tutorial
Install Go on Mac (with homebrew)
_Install Brew (skip if you already did)_medium.com
Con go versión pueden ver si realmente funciono la instalación y que versión tienen de go
Otro recurso practico que me ayudo para levantar mi primer API fue este
FaztWeb| Curso Completo de Golang REST API CRUD desde cero, para principiantes
_En este ejemplo práctico de Go aprenderemos a crear una REST API desde cero usando Mux y conceptos basicos de este…_www.faztweb.com
Sin embargo faltaban conceptos como ocupar un ORM y que ORM maneja Golang
De estos “googleando” llegue a https://gorm.io/index.html que parecía una muy buena opción.
Instalación en tu proyecto
go get -u gorm.io/gorm
Ahora dependiendo de la base de datos a ocupar, deberas buscar un dialecto
Puedes ver las distintas conexiones en
Connecting to a Database
_GORM officially supports databases MySQL, PostgreSQL, SQLite, SQL Server NOTE: To handle time.Time correctly, you need…_gorm.io
Otra dependencia importante de instalar es Fiber
Fiber es un marco web inspirado en Express construido sobre Fasthttp , el motor HTTP más rápido para Go . Diseñado para facilitar las cosas para un desarrollo rápido con cero asignación de memoria y rendimiento en mente.
instalación
go get github.com/gofiber/fiber/v2
Luego de eso te explicare mi estructura simple de la api
En donde la carpeta circleci, es la integración continua y los pasos para poder subir mi api a un servidor.
Puedes ver este video para darte una idea de lo que realizo en ese archivo
El resultado es algo como esto
En .ssh están las claves privadas y publicas para subir el proyecto, que es algo como esto.
Por supuesto debes crear las tuyas
Terminal (también en el video de referencia aparece muy bien explicado)
ssh-keygen -t rsa
- En database el archivo database.go contiene el paquete de conexión
y product es el modelo que consultara la base de datos con sus respectivos verbos.
dependencias
Modelo
Verbos
el archivo .envexample debes reemplazarlo por .env donde estarán las variables de entorno con las tuyas.
variables de entorno
El archivo docker-compose.yml puede ser reemplazado para que el orquestador sea kubernetes (de forma local es más practico orquestar la API de esta forma)
El archivo dockerfile es lo mínimo que requiere la api para funcionar y como se ve son pasos muy sencillos facil de replicar
El archivo main.go contiene la mayor cantidad de lógica de la aplicación
Dependencias
Revisa la existencia de un archivo .env para las variables de entorno.
Seteo de las variables de entorno
rutas de la api
inicialización de la base de datos
función principal
Código fuente
devjaime/golangrest
_GitHub is home to over 50 million developers working together to host and review code, manage projects, and build…_github.com
Espero este primer acercamiento te sirva en tus proyectos. (y en el futuro intentare realizar un video más detallado). Cualquier duda intentare contestar más seguido inclusive se que en post antiguos existen preguntas que no he contestado por lo cual intentare ponerme al día.
Donate to devjaime
_Help support devjaime by donating or sharing with your friends._www.paypal.com
By Jaime Hernández on December 6, 2020.
Exported from Medium on March 15, 2025.
~devjaime