Esta es una API REST creada con Node.js, Express y MySQL para gestionar objetos perdidos.
Permite realizar operaciones CRUD sobre los objetos y almacenar información relevante.
- Node.js con Express.js
- MySQL con
mysql2/promise - dotenv para variables de entorno
- CORS para seguridad
- (Opcional)
bcryptjsyjsonwebtokenpara autenticación
git clone https://github.com/tu-usuario/tu-repositorio.git
cd tu-repositorionpm installCrea un archivo .env en la raíz del proyecto y agrega:
DATABASE_HOST=127.0.0.1
DATABASE_USER=root
DATABASE_PASSWORD=tu_contraseña
DATABASE_NAME=objetos_perdidos
DATABASE_PORT=3306
PORT=5000
JWT_SECRET=clave_secreta_para_tokens(Asegúrate de cambiar tu_contraseña y clave_secreta_para_tokens por valores reales.)
Ejecuta en MySQL Workbench:
CREATE DATABASE objetos_perdidos;
USE objetos_perdidos;
CREATE TABLE objetos (
id INT AUTO_INCREMENT PRIMARY KEY,
tipo VARCHAR(255) NOT NULL,
descripcion TEXT,
ubicacion VARCHAR(255) NOT NULL,
fecha DATE NOT NULL,
estado VARCHAR(20) NOT NULL,
contacto VARCHAR(255) NOT NULL
);npm run devEl servidor se ejecutará en:
http://localhost:5000
GET /objetos
{
"info": { "count": 2 },
"results": [
{
"id": 1,
"tipo": "Celular",
"descripcion": "iPhone 13 negro con funda roja",
"ubicacion": "Parque Central",
"fecha": "2025-02-26",
"estado": "Perdido",
"contacto": "correo@example.com"
}
]
}GET /objetos/:id
Ejemplo: GET http://localhost:5000/objetos/1
{
"id": 1,
"tipo": "Celular",
"descripcion": "iPhone 13 negro con funda roja",
"ubicacion": "Parque Central",
"fecha": "2025-02-26",
"estado": "Perdido",
"contacto": "correo@example.com"
}Si el objeto no existe, devuelve:
{
"success": false,
"message": "Objeto no encontrado"
}POST /objetos Body (JSON):
{
"tipo": "Mochila",
"descripcion": "Mochila negra con laptop",
"ubicacion": "Biblioteca",
"fecha": "2025-03-10",
"estado": "Perdido",
"contacto": "usuario@email.com"
}Respuesta:
{
"success": true,
"message": "Objeto creado",
"id": 3
}PUT /objetos/:id
Ejemplo: PUT http://localhost:5000/objetos/1
Body (JSON):
{
"tipo": "Celular",
"descripcion": "iPhone 13 negro con funda azul",
"ubicacion": "Centro Comercial",
"fecha": "2025-02-26",
"estado": "Encontrado",
"contacto": "nuevo-correo@example.com"
}Respuesta esperada:
{
"success": true,
"message": "Objeto actualizado"
}DELETE /objetos/:id
Ejemplo: DELETE http://localhost:5000/objetos/1
Respuesta esperada:
{
"success": true,
"message": "Objeto eliminado"
}GET /objetos: Obtener todos los objetosGET /objetos/:id: Obtener un objeto por IDPOST /objetos: Crear un nuevo objetoPUT /objetos/:id: Actualizar un objetoDELETE /objetos/:id: Eliminar un objeto
tipo: Tipo del objeto (requerido)descripcion: Descripción del objetoubicacion: Ubicación donde se perdió el objeto (requerido)fecha: Fecha en que se perdió el objeto (requerido)estado: Estado del objeto (requerido)contacto: Información de contacto (requerido)
200 OK: Operación exitosa201 Created: Objeto creado400 Bad Request: Error en la solicitud404 Not Found: Objeto no encontrado500 Internal Server Error: Error del servidor
Si deseas contribuir a este proyecto, sigue estos pasos:
- Haz un fork del repositorio.
- Crea una nueva rama con tu funcionalidad:
git checkout -b feature/nueva-funcionalidad. - Realiza los cambios y commits necesarios.
- Envía tus cambios a tu fork:
git push origin feature/nueva-funcionalidad. - Crea un nuevo pull request en el repositorio original.
Este proyecto se encuentra bajo la licencia MIT.
Para ejecutar las pruebas, utiliza el siguiente comando:
npm testAsegúrate de tener la base de datos configurada correctamente antes de ejecutar las pruebas.