DTOs y Mappers
2 min read
·
Hoy escribiré un poco sobre qué son DTOs y Mappers con un ejemplo de cómo utilizarlos en conjunto con Typescript.
¿Qué es un DTO?
Las siglas significan Data Transfer Object, un DTO puede ser un modelo o una clase que se utilizan comúnmente para transformar o "filtrar" las propiedades de un objeto para que la información se adapte o concuerde con lo que espera recibir en alguna otra capa de la aplicación.
¿Qué es un Mapper?
Un Mapper es una función o una clase que es la encargada de hacer la transformación de la información en base al DTO proporcionado, un Mapper toma un objeto de una fuente (como información de una base de datos) y lo convierte en un objeto que sigue la estructura del DTO.
Si no quedó del todo claro, estoy seguro que esto tendrá más sentido con un ejemplo...
Imaginemos que tenemos un frontend que se comunica con una base de datos por medio de una api, desde el frontend queremos pedir un user y la api que estamos llamando tiene los siguientes campos:
{
"id": 123,
"username": "johndoe",
"email": "johndoe@example.com",
"country": "United States",
"age": 30,
"height": 175,
"gender": "male"
}
De todos esos campos en nuestro frontend solo necesitamos los campos id, username, email... Acá es donde entra en juego el DTO
interface userDTO {
id: number;
username: string;
email: string;
}
Esta interface que creamos es nuestro DTO y sirve para "filtrar" la información que necesitamos en el frontend.
// interfaz creada anteriormente
interface userDTO {
id: number;
username: string;
email: string;
}
// recibe user de la api
const mapperUserToDTO = (userFromApi: UserData): userDTO => {
return {
id: userFromApi.id,
username: userFromApi.username,
email: userFromApi.email,
};
};
El Mapper en este caso es una función que recibe la información de la api, usando nuestra interfaz DTO convierte la información y ya estaría lista para usarse en el frontend.
Beneficios de usar DTOs y Mappers
- Los DTOs y los Mappers ayudan a mantener una separación entre las diferentes capas de tu aplicación.
- Los DTOs permiten seleccionar solo los campos relevantes para la transferencia.
- Los Mappers transforman los datos según las necesidades específicas de cada capa.
En conclusión, los DTOs y los Mappers son herramientas para mantener una comunicación eficiente, estructurar datos y garantizar la coherencia en tu aplicación.