Documentación API REST

Documentación completa de la API REST del sistema Handmade Bags Store. Endpoints, métodos HTTP, ejemplos de uso y respuestas.

REST API JSON HTTP Methods Validation Transactions
API REST - Handmade Bags Store

Información General

Base URL
http://localhost:3001/api
Formato de Datos
  • Content-Type: application/json
  • Accept: application/json
  • Encoding: UTF-8
Códigos de Estado
  • 200 OK - Solicitud exitosa
  • 201 Created - Recurso creado
  • 400 Bad Request - Error en la solicitud
  • 404 Not Found - Recurso no encontrado
  • 500 Server Error - Error interno

Endpoints de Usuarios

POST
/api/usuarios

Crear un nuevo usuario en el sistema.

Request Body
{ "nombre": "Juan Pérez", "email": "juan@example.com", "password": "MiPassword123" }
Response (201 Created)
{
  "id": 1,
  "nombre": "Juan Pérez",
  "email": "juan@example.com",
  "createdAt": "2025-01-28T21:00:00.000Z",
  "updatedAt": "2025-01-28T21:00:00.000Z"
}
Ejemplo con cURL
curl -X POST http://localhost:3001/api/usuarios \ -H "Content-Type: application/json" \ -d '{ "nombre": "Juan Pérez", "email": "juan@example.com", "password": "MiPassword123" }'
GET
/api/usuarios

Obtener todos los usuarios registrados en el sistema.

Response (200 OK)
[
  {
    "id": 1,
    "nombre": "Juan Pérez",
    "email": "juan@example.com",
    "createdAt": "2025-01-28T21:00:00.000Z",
    "updatedAt": "2025-01-28T21:00:00.000Z"
  },
  {
    "id": 2,
    "nombre": "María García",
    "email": "maria@example.com",
    "createdAt": "2025-01-28T21:05:00.000Z",
    "updatedAt": "2025-01-28T21:05:00.000Z"
  }
]
Ejemplo con cURL
curl http://localhost:3001/api/usuarios
GET
/api/usuarios/:id

Obtener un usuario específico por su ID.

Parámetros
  • id - ID del usuario (integer)
Response (200 OK)
{
  "id": 1,
  "nombre": "Juan Pérez",
  "email": "juan@example.com",
  "createdAt": "2025-01-28T21:00:00.000Z",
  "updatedAt": "2025-01-28T21:00:00.000Z"
}
Ejemplo con cURL
curl http://localhost:3001/api/usuarios/1
PUT
/api/usuarios/:id

Actualizar los datos de un usuario existente.

Request Body
{ "nombre": "Juan Carlos Pérez", "email": "juancarlos@example.com" }
Response (200 OK)
{
  "id": 1,
  "nombre": "Juan Carlos Pérez",
  "email": "juancarlos@example.com",
  "createdAt": "2025-01-28T21:00:00.000Z",
  "updatedAt": "2025-01-28T21:10:00.000Z"
}
Ejemplo con cURL
curl -X PUT http://localhost:3001/api/usuarios/1 \ -H "Content-Type: application/json" \ -d '{ "nombre": "Juan Carlos Pérez", "email": "juancarlos@example.com" }'
DELETE
/api/usuarios/:id

Eliminar un usuario del sistema. También elimina todos sus pedidos asociados.

Response (200 OK)
{
  "message": "Usuario eliminado correctamente"
}
Ejemplo con cURL
curl -X DELETE http://localhost:3001/api/usuarios/1

Endpoints de Pedidos

POST
/api/pedidos

Crear un nuevo pedido. Utiliza transacciones para garantizar consistencia.

Request Body
{ "usuario_id": 1, "producto": "Makeup Bag Lavender", "cantidad": 2 }
Response (201 Created)
{
  "id": 1,
  "usuario_id": 1,
  "producto": "Makeup Bag Lavender",
  "cantidad": 2,
  "fecha_pedido": "2025-01-28",
  "createdAt": "2025-01-28T21:00:00.000Z",
  "updatedAt": "2025-01-28T21:00:00.000Z"
}
Ejemplo con cURL
curl -X POST http://localhost:3001/api/pedidos \ -H "Content-Type: application/json" \ -d '{ "usuario_id": 1, "producto": "Makeup Bag Lavender", "cantidad": 2 }'
GET
/api/pedidos

Obtener todos los pedidos del sistema.

Response (200 OK)
[
  {
    "id": 1,
    "usuario_id": 1,
    "producto": "Makeup Bag Lavender",
    "cantidad": 2,
    "fecha_pedido": "2025-01-28",
    "createdAt": "2025-01-28T21:00:00.000Z",
    "updatedAt": "2025-01-28T21:00:00.000Z"
  }
]
Ejemplo con cURL
curl http://localhost:3001/api/pedidos
GET
/api/pedidos/usuario/:id

Obtener todos los pedidos de un usuario específico.

Parámetros
  • id - ID del usuario (integer)
Response (200 OK)
[
  {
    "id": 1,
    "usuario_id": 1,
    "producto": "Makeup Bag Lavender",
    "cantidad": 2,
    "fecha_pedido": "2025-01-28",
    "createdAt": "2025-01-28T21:00:00.000Z",
    "updatedAt": "2025-01-28T21:00:00.000Z"
  }
]
Ejemplo con cURL
curl http://localhost:3001/api/pedidos/usuario/1

Validaciones y Manejo de Errores

Validaciones de Usuario
  • nombre: 2-60 caracteres, requerido
  • email: formato válido, único en la BD
  • password: mínimo 8 caracteres, al menos 1 número
Validaciones de Pedido
  • usuario_id: debe existir en la BD
  • producto: 1-100 caracteres, requerido
  • cantidad: número entero mayor a 0
Ejemplos de Errores
Error de Validación (400)
{
  "errors": [
    {
      "field": "email",
      "message": "Debe ser un email válido"
    },
    {
      "field": "password",
      "message": "La contraseña debe contener al menos un número"
    }
  ]
}
Usuario No Encontrado (404)
{
  "error": "Usuario no encontrado"
}
Error de Servidor (500)
{
  "error": "Error interno del servidor"
}

Ejemplos de Uso Completos

Flujo Completo: Crear Usuario y Pedido
# 1. Crear usuario curl -X POST http://localhost:3001/api/usuarios \ -H "Content-Type: application/json" \ -d '{ "nombre": "Ana López", "email": "ana@example.com", "password": "MiPassword123" }' # 2. Crear pedido para el usuario curl -X POST http://localhost:3001/api/pedidos \ -H "Content-Type: application/json" \ -d '{ "usuario_id": 1, "producto": "Tote Bag", "cantidad": 1 }' # 3. Ver pedidos del usuario curl http://localhost:3001/api/pedidos/usuario/1
Flujo de Actualización
# 1. Obtener usuario curl http://localhost:3001/api/usuarios/1 # 2. Actualizar datos curl -X PUT http://localhost:3001/api/usuarios/1 \ -H "Content-Type: application/json" \ -d '{ "nombre": "Ana María López", "email": "anamaria@example.com" }' # 3. Verificar actualización curl http://localhost:3001/api/usuarios/1

Enlaces Relacionados