Documentación de Servicios (services/
)
Este documento describe los módulos de servicios utilizados para interactuar con el backend a través de peticiones HTTP. Cada archivo encapsula funciones para una entidad del sistema (auth, carrito, productos, etc.).
AuthService.js
Autenticación de usuarios
const API_URL = import.meta.env.VITE_API_BASE_URL;
loginService(username, password)
const res = await fetch(`${API_URL}/auth/login`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ username, password })
});
- Retorna token JWT y datos del usuario.
- Lanza error si las credenciales son inválidas.
registerService(...)
Registra un nuevo usuario con coordenadas y dirección.
CartService.js
Operaciones del carrito de compras
Cada función usa Authorization: Bearer <token>
.
getCart()
Obtiene el carrito actual del usuario.
const res = await fetch(`${API_URL}/cart/`, { headers: { Authorization: 'Bearer ...' } });
addToCart(productId, quantity)
Agrega un producto al carrito.
removeFromCart(productId)
Elimina un producto del carrito.
updateCart(items)
Actualiza todo el carrito con un array de { productId, quantity }
.
categoryService.js
Gestión de categorías y unidades de medida
getCategories()
Obtiene todas las categorías registradas.
getMeasureUnits()
Obtiene unidades de medida como "kg"
, "litro"
, etc.
geolocationService.js
Servicio de geolocalización inversa con Nominatim (OpenStreetMap)
geolocationService(lat, lng)
fetch(`https://nominatim.openstreetmap.org/reverse?lat=${lat}&lon=${lng}&format=json`)
- Devuelve una dirección legible.
- Usa
User-Agent
personalizado.
productService.js
Gestión de productos
getProducts()
Obtiene todos los productos publicados.
getProductById(id)
Obtiene los detalles de un producto específico.
createProductService(data, token)
Crea un nuevo producto autenticado.
updateProduct(productId, data)
Actualiza un producto existente.
getProductsPostedByUser()
Filtra productos del usuario autenticado.
getProductsByArea(distanceRadius)
fetch(`${API_URL}/products/nearby?maxDistance=1000`)
Filtra productos por cercanía geográfica (usando coordenadas del perfil).
OrderService.js
Gestión de órdenes
createOrder()
Crea una nueva orden para el usuario actual.
getOrders()
Obtiene todas las órdenes del usuario.
getOrderById(orderId)
Detalle completo de una orden.
updateOrderStatus(orderId, newStatus)
Actualiza estado de la orden (pending
, in_progress
, completed
, etc.).
UserService.js
Gestión del perfil de usuario
getUserInfo()
Obtiene el perfil actual del usuario autenticado.
updateUser(data)
Actualiza nombre, dirección, teléfono, etc.
getSellers()
fetch(`${API_URL}/profile/nearby-sellers`)
Devuelve una lista de vendedores cercanos.
Notas Comunes
- Todos los servicios dependen de la variable
VITE_API_BASE_URL
. - Se utiliza
localStorage.getItem('token')
para autenticación Bearer. - Errores se manejan con
throw new Error()
tras inspeccionarresponse.ok
.