API REST para la gestión de usuarios con GO.
GO 1.16
PostgreSQL 12, 13
-
Instalar la versión de GO 1.16 o posterior de acuerdo a su sistema operativo.
-
Clonar el proyecto.
-
Crear la base de datos.
-
Migraciones usando
golang-migrate
(opcional).-
Descargar el ejecutable de
golang-migrate
para ejecutar las migraciones: -
En Windows guardar el archivo en la siguiente ruta:
c:/go-migrate/migrate.exe
Si elige otra ruta para guardar el ejecutable debe configurar el archivo
migrate.sh
. -
Configurar DSN para conectarse a la base de datos en el archivo
migrate.sh
. -
Para ejecutar las migraciones abrir la consola
Git Bash
y usar el siguiente comando:export DBPWD=mypassword && . migrate.sh up
Donde el valor de la variable de entorno
DBPWD
es la contraseña de la base de datos. -
Dentro de la carpeta db de
migrations
encontrará el script para insertar registros de prueba.
-
-
Migraciones usando pgAdmin:
-
Configurar variables de entorno en el archivo
.env
(Ver el archivo.env.example
). -
Ejecutar el servidor local:
go run main.go
Ver Migraciones
En la carpeta postman se encuentra la colección para consumir los endpoints.
La API REST proporciona las siguientes rutas:
Name | Route | Protected | Method |
---|---|---|---|
Signup | /signup | No | POST |
Login | /login | No | POST |
Name | Route | Protected | Method |
---|---|---|---|
Get all users | /users | Yes | GET |
Get User | /users/:id | Yes | GET |
Los tests se encuentran dentro de la carpeta tests. Se prueban los endpoints de la API.
Se utilizan los siguientes paquetes de Go:
- Aserciones: testify
- Generación de stubs para simulación de dependencias: gomock
- Generador de datos aleatorios: gofakeit
Para ejecutar los tests use el siguiente comando:
cd tests && go test -v ./...
Se utilizan los principios del patrón de diseño MVC para hacer mantenible y escalable el proyecto.
anpack-go
├── app Aplicación principal del proyecto.
│ ├── auth Servicio de autenticación.
│ ├── controllers Funciones de controlador para una ruta en particular.
│ ├── middlewares Middlewares que se utilizarán en el proyecto.
│ ├── models Tablas de la base de datos que se utilizarán como estructura de modelos.
│ ├── repositories Persistir los datos en la base de datos.
│ ├── resources Contiene estructuras que se usan como respuestas.
│ ├── ├── api Recursos asosiados a la API.
│ ├── ├── ├── errors Tipos y manejo de errores.
│ ├── ├── ├── requests Estructuras y otros modelos usados para hacer solicitudes.
│ ├── └── └── responses Estructuras y otros modelos usadas como respuesta.
│ ├── routes Rutas de la API.
│ ├── services Logica de negocio.
│ └── utils Funciones de ayuda utilizadas en todo el proyecto.
├── migrations Migraciones de base de datos
│ ├── db Archivos de consultas SQL.
│ └── versions Versiones individuales del esquema de la base de datos.
├── pkg Paquetes generales independientes del framework usado.
│ ├── config Archivos para leer variables de entorno.
│ ├── database Archivos para conectarse a base de datos.
│ ├── faker Generador de datos falsos aleatorios.
│ └── mock Archivos para simular la base de datos.
├── main.go Punto de entrada para iniciar el servidor.
├── .env.example Archivo de ejemplo para configurar las variables de entorno.
└── migrate.sh Script para ejecutar las migraciones de la base de datos.
Luis Guillermo Gómez