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)
bcryptjs
yjsonwebtoken
para autenticación
git clone https://github.com/tu-usuario/tu-repositorio.git
cd tu-repositorio
npm install
Crea 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 dev
El 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 test
Asegúrate de tener la base de datos configurada correctamente antes de ejecutar las pruebas.