- Introducción
- Características
- Tecnologías Utilizadas
- Instalación
- Configuración
- Uso
- Endpoints
- Ejemplos de Uso
- Contribuciones
- Licencia
- Contacto
Store API es una API RESTful para la gestión de productos en una tienda. Está construida con Node.js y utiliza MongoDB para almacenar datos.
- CRUD para productos
- Autenticación de usuarios
- Carga de archivos
- Notificaciones por correo electrónico
- Manejo de errores
- Comunicación en tiempo real
- Backend: Node.js, Express.js
- Base de datos: MongoDB, Mongoose
- Autenticación: JSON Web Tokens (JWT)
- Otros: dotenv, CORS, bcrypt
- Clona el repositorio:
git clone https://github.com/mzipi/store-api.git
- Navega a la carpeta del proyecto:
cd store-api
- Instala las dependencias:
npm install
- Configura las variables de entorno necesarias.
Asegúrate de crear un archivo .env
en la raíz del proyecto y agregar las siguientes variables:
MONGO_URI
: URI de conexión a tu base de datos MongoDB.PORT
: Puerto en el que se ejecutará la API (por defecto, 8080).JWT_SECRET
: Secreto para firmar los tokens JWT.EMAIL_USER
: Usuario para las notificaciones por correo electrónico.EMAIL_PASS
: Contraseña para el usuario de correo electrónico.
Inicia la API con: npm start
. Accede en http://localhost:8080
.
Método | Endpoint | Descripción |
---|---|---|
GET | /api/products |
Obtener todos los productos |
GET | /api/products/:id |
Obtener un producto por su ID |
POST | /api/products |
Crear un nuevo producto |
PUT | /api/products/:id |
Actualizar un producto por su ID |
DELETE | /api/products/:id |
Eliminar un producto por su ID |
POST | /api/users/register |
Registrar un nuevo usuario |
POST | /api/users/login |
Iniciar sesión de un usuario |
GET | /api/cart |
Obtener el carrito del usuario |
POST | /api/cart |
Añadir un producto al carrito |
DELETE | /api/cart/:id |
Eliminar un producto del carrito |
POST | /api/orders |
Crear una nueva orden |
GET | /api/orders/:id |
Obtener detalles de una orden por su ID |
POST | /api/images/upload |
Subir una nueva imagen |
# Obtener todos los productos
wget --method=GET --header="Content-Type: application/json" http://localhost:8080/api/products
# Obtener un producto por ID
wget --method=GET --header="Content-Type: application/json" http://localhost:8080/api/products/1
# Crear un nuevo producto
wget --method=POST --header="Content-Type: application/json" --body-data='{
"name": "Nuevo Producto",
"price": 150,
"description": "Descripción del nuevo producto"
}' http://localhost:8080/api/products
# Actualizar un producto por ID
wget --method=PUT --header="Content-Type: application/json" --body-data='{
"name": "Producto Actualizado",
"price": 200,
"description": "Descripción actualizada del producto"
}' http://localhost:8080/api/products/1
# Eliminar un producto por ID
wget --method=DELETE --header="Content-Type: application/json" http://localhost:8080/api/products/1
# Registrar un nuevo usuario
wget --method=POST --header="Content-Type: application/json" --body-data='{
"email": "nuevo_usuario@example.com",
"password": "nueva_contraseña"
}' http://localhost:8080/api/users/register
# Iniciar sesión de un usuario
wget --method=POST --header="Content-Type: application/json" --body-data='{
"email": "usuario@example.com",
"password": "contraseña123"
}' http://localhost:8080/api/users/login
# Obtener el carrito del usuario
wget --method=GET --header="Content-Type: application/json" http://localhost:8080/api/cart
# Añadir un producto al carrito
wget --method=POST --header="Content-Type: application/json" --body-data='{
"productId": "1",
"quantity": 1
}' http://localhost:8080/api/cart
# Eliminar un producto del carrito
wget --method=DELETE --header="Content-Type: application/json" http://localhost:8080/api/cart/1
# Crear una nueva orden
wget --method=POST --header="Content-Type: application/json" --body-data='{
"cartId": "carrito-id",
"address": "Dirección de envío"
}' http://localhost:8080/api/orders
# Obtener detalles de una orden
wget --method=GET --header="Content-Type: application/json" http://localhost:8080/api/orders/123
# Subir una nueva imagen
wget --method=POST --header="Content-Type: multipart/form-data" --body-file=@imagen.png http://localhost:8080/api/images/upload
Contribuciones son bienvenidas. Abre un issue o un pull request.
Este proyecto está bajo la Licencia MIT.
Más información en GitHub.