Saltar al contenido principal

Estructura

🏡 La estructura

Códigos

En base a las categorías que tenemos de los errores, podemos definir los siguientes códigos de error que irán dentro de la respuesta.

  • Errores de validación: VALIDATION_ERROR
  • Errores de autentificación: AUTHENTICATION_ERROR
  • Errores de autorización: AUTHORIZATION_ERROR
  • Errores por no encontrar el recurso: NOT_FOUND_ERROR
  • Errores de conflicto: CONFLICT_ERROR
  • Errores por límite de intentos: RATE_LIMIT_ERROR
  • Errores de dominio: DOMAIN_ERROR
  • Errores internos: INTERNAL_SERVER_ERROR
  • Errores de servicios externos: EXTERNAL_SERVICE_ERROR

Interfaz

En definitiva, cada respuesta con errores debe seguir la siguiente estructura:

  • Type: código del tipo de error. Debe ser alguno de los listados arriba.
  • Code: código directo del error que ocurrió.
  • Title: mensaje principal que el frontend pueda mostrar al usuario en pantalla.
  • Message: sub-mensaje que el frontend pueda utilizar para dar más información al usuario.
  • Status: código HTTP de la respuesta (solo aplicable para GraphQL)
  • Details: array customizable por error con información adicional que pueda ser de ayuda.
  • Stack: ubicación del error en el código del proyecto.
interface ErrorResponse {
type: string;
code: string;
title: string;
message: string;
status: number;
details: Record<string, any>[];
stack?: string; // Solo para entornos de desarrollo
}

Ejemplo

{
"type": "NOT_FOUND_ERROR",
"code": "USER_NOT_FOUND",
"title": "Usuario no encontrado",
"message": "No encontramos el usuario que buscas",
"status": 404, // Solo para GraphQL
"details": [
{
"field": "_id",
"value": "123",
},
],
"stack": "...",
}