Respuestas
Introducción
La respuesta de un servicio es el resultado que se envía al cliente tras procesar una solicitud. Puede tener diferentes formatos dependiendo de la necesidad, como JSON para datos estructurados, texto plano para mensajes simples, HTML para contenido web, archivos binarios para descargas o incluso respuestas en streaming para datos enviados progresivamente. Su contenido y código de estado (como 200 para éxito o 400 para errores) indican el resultado de la operación realizada.
En sus acciones, Cafeto utiliza las respuestas estándar de Starlette
, que incluyen: JSON
, HTML
, Texto Plano
, Archivos Binarios
, Streaming
o None
(sin contenido). Además, Cafeto ofrece dos respuestas adicionales para manejar DTOs: ModelResponse
y ModelWSResponse
(específica para websockets). Este enfoque lo llamamos el Método Clásico
.
Complementando las respuestas del Método Clásico
, Cafeto introduce un sistema adicional denominado Método Unificado
.
La principal diferencia es que en el Método Clásico
el desarrollador debe elegir manualmente el tipo de respuesta según el dato a retornar. En contraste, el Método Unificado
siempre utiliza una única respuesta que puede detectar automáticamente el tipo de dato a retornar, simplificando el proceso.
En el Método Clásico
, el código de estado por defecto (statusCode
) es siempre 200
, y debe ajustarse manualmente según las necesidades. Por otro lado, en el Método Unificado
, cada tipo de respuesta está asociado automáticamente a un código de estado específico.
Respuesta JSON
Es importante recordar que el tipo de respuesta de las acciones no es estrictamente obligatorio y solo se usa para la documentación con OpenApi, pero se sugiere usarla para tener un proyecto más claro y fácil de mantener.
Respuesta DTO
Respuesta Lista de DTOs
Respuesta sin contenido
Respuesta archivo o binario
Respuesta texto plano
Respuesta HTML
Respuesta Streaming
Conclusión
Ambos sistemas son bastante buenos, cada uno tiene sus pros y sus contras. Queda a discreción de cada desarrollador usar uno u otro. Se recomienda elegir uno desde el comienzo para evitar la confusión y no combinar los dos sistemas, así se tendrá mayor orden y control sobre el sistema.