REST API DEVELOPMENT BY JEAN GARZON
Este proyecto es una API RESTful desarrollada con Node.js, Express, Sequelize y PostgreSQL. La API permite realizar operaciones CRUD y está documentada con Swagger.
Para instalar las dependencias necesarias, ejecuta el siguiente comando:
npm install
Crea un archivo .env
en la raíz del proyecto y define las siguientes variables de entorno:
DB_USER=postgres # usuario del servidor postgres *
DB_PASSWORD=postgres # contraseña del usuario postgres *
DB_HOST=localhost # host de la conexión *
DB_NAME=shoptest # nombre de la base de datos *
ENV_DEV=true # configuración del modo desarrollo en true
CLIENT_HOST=http://localhost:3000 # cliente host (valida la conexion de cors, en caso de no especificar queda abierto a todos los dominios)
SERVER_PORT=3001 # servidor puerto (en caso de no pasar por defecto sera el puerto 3001)
SERVER_HOST=http://localhost:3001 # servidor host
SECRET_KEY=your_secret_key #clave secreta para gestionar JWT (en caso de no especificar toma un valor por defecto)
Estas variables son por defecto y pueden ajustarse según tu configuración.
Una vez configurado el entorno, ejecuta el siguiente comando para iniciar el servidor:
npm start
El servidor se ejecutará en el puerto 3001
. Verifica la consola para confirmar que el servidor se ha iniciado correctamente:
{"level":"info","message":"Server is listening at port 3001","timestamp":"2024-06-20T06:11:05.695Z"}
Los logs se registrarán en un archivo llamado combined.log
en la carpeta RAIZ
.
El API utiliza bcrypt para encriptar las contraseñas antes de almacenarlas en la base de datos, asegurando así la seguridad de los datos sensibles.
La autenticación se maneja mediante tokens JWT (JSON Web Tokens). Para acceder a los endpoints protegidos, es necesario que el cliente proporcione una cookie Http Only llamada "token". Esta cookie debe ser enviada automáticamente por el navegador en cada solicitud para validar el acceso al recurso.
El API incluye un manejador de errores centralizado que captura y gestiona las excepciones, proporcionando respuestas claras y coherentes al cliente.
Las rutas no definidas en el API son gestionadas por un middleware específico que retorna un error 404, indicando que la ruta no ha sido encontrada.
El sistema de registro de logs guarda información detallada de las operaciones del servidor, incluyendo:
- Tipo de log (info, error, etc.)
- Contenido del log
- Fecha y hora del log
Estos logs se almacenan en el archivo combined.log
en la carpeta API
.
Las validaciones se implementan tanto en la definición de modelos como en las solicitudes (requests) disponibles. Esto garantiza la integridad y consistencia de los datos que se manejan.
El servidor expone un endpoint exclusivo para visualizar la documentación realizada con Swagger, la cual define los endpoints disponibles y el modelado de la base de datos. La documentación se encuentra en la ruta:
- Desarrollo: http://localhost:3001
- Producción: https://api-rest-lexart-labs-test.onrender.com/
Actualmente, el proyecto se encuentra desplegado en Render:
Si tienes algún problema o pregunta sobre la configuración o el uso del proyecto, no dudes en abrir un issue o contactarnos.