apiJimpNode es una app backend desarrollada básicamente con Node js, Typescript y MySQL. La API recibe una imagen a través de una solicitud en form-data y cuenta con tres rutas, por el momento, que realizan modificaciones a la imagen recibida, usando Jimp. Cuenta con dos usuarios predeterminados con fines de prueba, los cuales vienen insertados en la base de datos, cuya query está en la carpeta raíz del repositorio. La edición de imágenes se lleva a cabo con usuarios validados a través de un token, los cuales pueden acceder a las rutas almacenadas localmente de las imágenes que han modificado
- Node.js: Para el entorno de ejecución.
- TypeScript: Para un desarrollo tipado.
- Express: Framework para construir la API.
- Multer: Para la subida de archivos.
- TypeORM: Para la interacción con la base de datos.
- DotENV: para el manejo de variables de entorno locales.
- mysql2: gestor de la base de datos.
- jimp: para la modificación de imagenes.
- jsonwebtoken: para generar tokens de usuarios.
Pasos para configurar el proyecto en una máquina local:
- Clonar el repositorio:
git clone https://github.com/JUrielC/apiJimpNode
- Navegar a la carptea raíz:
cd nombre-del-proyecto - Instalar dependencias:
npm install
- Compilar los archivos Typescript
npm run tsc
- Ejecutar el archivo index desde la carpeta raíz:
node build/index.js
-
Configurar variables de entorno de acuerdo al archivo .env.example que está en la carpeta raíz
Cambiar la extensión del archivo .env.example por .env o crear un nuevo .env con la estructura de env.example en la misma ubicación (carpeta raíz) y darle los valores que se indican en ese archivo (NODE_PORT, HOST, etc) -
Ruta para login:
Es necesario hacer un login para obtener un token que permita usar las demás funciones Los usarios predeterminados son { "userName": "user0", "password": "pass0" } { "userName": "user1", "password": "pass1" }http://localhost:PUERTO/login/
-
Rutas para uso de Jimp:
-
Ruta: http://localhost:PUERTO/image/fisheye
Body:
-Imagen (usando form-data) -
Ruta: http://localhost:PUERTO/image/resize
Body:
-Imagen (usando form-data)
-Width:
Key: width
Value: NUMERO ENTERO (Opcional)
-Height:
Key: height
Value: NUMERO ENTERO (Opcional) -
Ruta: http://localhost:PUERTO/image/rotate
Body:
-Imagen (usando form-data)
-Rotate:
Key: rotate
Value: NUMERO ENTERO