Manejo de Errores
Console usa códigos de estado HTTP estándar y formatos de respuesta de error consistentes.
Códigos de Estado HTTP
| Código | Significado |
|---|---|
200 | Éxito |
201 | Creado |
400 | Solicitud incorrecta (error de lógica de negocio) |
401 | No autenticado (token inválido/faltante) |
403 | No autorizado (permisos insuficientes) |
404 | Recurso no encontrado |
422 | Error de validación (formato de solicitud inválido) |
429 | Límite de tasa excedido |
Formato de Respuesta de Error
Errores de Lógica de Negocio (400)
{
"error": "User with this email already exists",
"error_code": "USER_EMAIL_DUPLICATE"
}
Errores de Validación (422)
{
"errors": [
{
"field": "email",
"message": "must be a valid email"
}
]
}
Códigos de Error Comunes
| Código | Significado | Acción |
|---|---|---|
INVALID_CREDENTIALS | Email/contraseña incorrectos | Verifica credenciales |
TOKEN_EXPIRED | Access token expirado | Renueva el token |
FORBIDDEN | Permiso faltante | Verifica los grupos del usuario |
USER_EMAIL_DUPLICATE | Email ya existe | Usa un email diferente |
Manejo de Errores
try {
const response = await fetch('/v1/users', {
headers: { 'Authorization': `Bearer ${token}` }
});
if (!response.ok) {
const error = await response.json();
if (response.status === 401) {
// Renueva el token o redirige al login
} else if (response.status === 422) {
// Muestra errores de validación al usuario
console.error(error.errors);
} else {
// Muestra mensaje de error genérico
console.error(error.error);
}
}
return await response.json();
} catch (err) {
// Error de red o API inalcanzable
console.error('Network error:', err);
}