https://github.com/mzipi/store-api
Store API REST
https://github.com/mzipi/store-api
api-rest mongo mongoose multer node nodemailer passport socket-io winston-logger
Last synced: 3 months ago
JSON representation
Store API REST
- Host: GitHub
- URL: https://github.com/mzipi/store-api
- Owner: mzipi
- Created: 2022-09-05T23:29:46.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2025-02-13T05:11:46.000Z (over 1 year ago)
- Last Synced: 2025-06-02T04:09:08.293Z (about 1 year ago)
- Topics: api-rest, mongo, mongoose, multer, node, nodemailer, passport, socket-io, winston-logger
- Language: JavaScript
- Homepage:
- Size: 44.3 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Tabla de Contenidos
- [Introducción](#introducción)
- [Características](#características)
- [Tecnologías Utilizadas](#tecnologías-utilizadas)
- [Instalación](#instalación)
- [Configuración](#configuración)
- [Uso](#uso)
- [Endpoints](#endpoints)
- [Ejemplos de Uso](#ejemplos-de-uso)
- [Contribuciones](#contribuciones)
- [Licencia](#licencia)
- [Contacto](#contacto)
## Introducción
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.
## Características
- CRUD para productos
- Autenticación de usuarios
- Carga de archivos
- Notificaciones por correo electrónico
- Manejo de errores
- Comunicación en tiempo real
## Tecnologías Utilizadas
* **Backend**: Node.js, Express.js
* **Base de datos**: MongoDB, Mongoose
* **Autenticación**: JSON Web Tokens (JWT)
* **Otros**: dotenv, CORS, bcrypt
## Instalación
1. Clona el repositorio: `git clone https://github.com/mzipi/store-api.git`
2. Navega a la carpeta del proyecto: `cd store-api`
3. Instala las dependencias: `npm install`
4. Configura las variables de entorno necesarias.
## Configuración
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.
## Uso
Inicia la API con: `npm start`. Accede en `http://localhost:8080`.
## Endpoints
| 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 |
## Ejemplos de Uso
```bash
# 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
Contribuciones son bienvenidas. Abre un issue o un pull request.
## Licencia
Este proyecto está bajo la Licencia MIT.
## Contacto
Más información en [GitHub](https://github.com/mzipi/store-api).