Bienvenido a AluraGeek API

Esta API proporciona acceso a los datos de productos, categorías y usuarios de la tienda AluraGeek. Utiliza Express.js con MongoDB para ofrecer una interfaz RESTful para gestionar el contenido de la tienda.

Endpoints Disponibles

GET

/api/article/get-some-articles

Obtiene una selección aleatoria de artículos agrupados por categorías.

Parámetros de consulta:

categoryLimit: Número de categorías a devolver

articlesLimit: Número de artículos por categoría

No requiere autenticación
GET

/api/article/search-articles

Busca artículos por nombre con coincidencia parcial.

Parámetros de consulta:

query: Texto a buscar

articlesLimit: Límite de resultados a devolver

No requiere autenticación
POST

/api/user/register-user

Registra un nuevo usuario en el sistema.

Cuerpo de la solicitud:

{
  "email": "admin@gmail.com",
  "password": "Admin123!"
}
No requiere autenticación
POST

/api/user/login-user

Inicia sesión y obtiene tokens de autenticación.

Cuerpo de la solicitud:

{
  "email": "admin@gmail.com",
  "password": "Admin123!"
}
No requiere autenticación
POST

/api/article/insert-article

Crea un nuevo artículo en la base de datos.

Cuerpo de la solicitud:

{
  "name": "Nombre del artículo",
  "price": 299.99,
  "description": "Descripción del artículo",
  "image": "https://ejemplo.com/imagen.jpg",
  "categories": ["ID_categoría1", "ID_categoría2"]
}
Requiere autenticación
PUT

/api/article/update-article/:articleId

Actualiza un artículo existente por su ID.

Parámetros de ruta:

articleId: ID del artículo a eliminar

Cuerpo de la solicitud:

{
  "name": "Nombre actualizado",
  "price": 349.99,
  "description": "Nueva descripción",
  "image": "https://ejemplo.com/nueva-imagen.jpg",
  "categories": ["ID_categoría1", "ID_categoría2"]
}
Requiere autenticación
DELETE

/api/article/delete-article/:articleId

Elimina un artículo existente por su ID.

Parámetros de ruta:

articleId: ID del artículo a eliminar

Requiere autenticación
GET

/api/article/get-recommended-articles/:articleId

Obtiene artículos recomendados basados en un artículo específico.

Parámetros de consulta:

articleId: ID del artículo para que no lo recomiende

categoryLimit: Número de categorías a considerar

articlesLimit: Número de artículos por categoría

No requiere autenticación
POST

/api/comment/insert-comment

Añade un nuevo comentario.

Cuerpo de la solicitud:

{
  "name": "Nombre de usuario",
  "message": "Mensaje del comentario"
}
No requiere autenticación

Ejemplo de Uso

Este es un ejemplo de cómo usar la API para obtener artículos:

fetch('http://localhost:5000/api/article/get-some-articles?categoryLimit=2&articlesLimit=4')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));

Ejemplo de respuesta:

{
  "data": [
    {
      "category": {
        "id": "680b20afc0d13ce41d4f9ce8",
        "name": "Consolas"
      },
      "articles": [
        {
          "_id": "680b20afc0d13ce41d4f9ce9",
          "name": "PS5 Pro",
          "price": 599.99,
          "description": "La consola más potente de PlayStation...",
          "image": "https://res.cloudinary.com/..."
        }
        // Más artículos...
      ]
    }
  ]
}

Configuración del Entorno

  1. Clona el repositorio

  2. Instala las dependencias con npm install

  3. Crea un archivo .env con las siguientes variables:

    CONNECTION_STRING_DB=your_mongodb_url
    PORT=5000
    SECRET_KEY=your_secret_key
    REFRESH_SECRET_KEY=your_refresh_key
    SALT_ROUNDS=10
  4. Inicia el servidor con npm run dev