Appearance
Archivos de la Carpeta lib
La carpeta src/lib contiene librerías y utilidades genéricas que no encajan directamente en otras categorías más específicas (como controladores o servicios). Estos archivos suelen ofrecer funcionalidad de apoyo o herramientas transversales que pueden ser reutilizadas en distintas partes de la aplicación para operaciones comunes y estandarizadas.
json.response.ts
Este archivo proporciona una utilidad para construir respuestas HTTP estandarizadas en formato JSON.
- Descripción: Define el tipo
JsonResponsey una funciónjsonResponseque permite crear objetos de respuesta con un código de estado, un cuerpo (payload) y encabezados, asegurando que elContent-Typesea siempreapplication/jsonpor defecto. Incluye una validación para el código de estado. - Propósito: Estandarizar el formato de las respuestas JSON en toda la API, facilitando la consistencia y la legibilidad del código al centralizar la construcción de estas respuestas. También añade una capa de validación para los códigos de estado HTTP.
- Funcionalidad:
JsonResponse<T>: Un tipo genérico que define la estructura esperada de una respuesta JSON, incluyendo statusCode, body (tipificado con T) y headers opcionales.jsonResponse<T>(...): Una función que toma un código de estado, un cuerpo de respuesta y encabezados opcionales para construir y retornar un objeto JsonResponse.- Validación de código de estado: Asegura que el
statusCodeproporcionado esté dentro del rango válido (100-599) para HTTP.
- Rol en la aplicación: Actúa como un constructor de respuestas HTTP robusto y predecible. Su uso garantiza que todas las respuestas JSON de la API sigan un formato uniforme, lo que es invaluable para el frontend que consume la API y para cualquier otra integración, simplificando el parseo y manejo de las respuestas.
ts
type JsonResponse<T> = {
statusCode: number;
body: T;
headers?: Record<string, string>;
};
export function jsonResponse<T>(
statusCode: number,
body: T,
headers: Record<string, string> = { "Content-Type": "application/json" }
): JsonResponse<T> {
/*
* Valida que el statusCode HTTP esté dentro del rango válido (100-599).
* Si el código es inválido, lanza un error para detener la ejecución.
*/
if (statusCode < 100 || statusCode > 599) {
throw new Error("Invalid status code. It must be between 100 and 599.");
}
/*
* Retorna un objeto con la estructura de JsonResponse<T>.
* Este objeto contiene el código de estado, el cuerpo de la respuesta
* y los encabezados (por defecto, Content-Type: application/json).
*/
return {
statusCode,
body,
headers,
};
}