O que é DTO? - Full Cycle FullCycle

Voltar

Wesley Willians

O que é DTO?

10 min de leitura

DTO (Data Transfer Object) é um padrão de software voltado para a transferência de dados entre as camadas de uma aplicação. Ele consiste basicamente no entendimento de como as informações trafegam dentro de um sistema.

Quando desenvolvemos uma aplicação existem diversas responsabilidades e camadas que separam detalhes, como: o coração da aplicação, o seu comportamento, as comunicações e como os dados externos são recebidos.

Compatibilidade

A questão é que dados externos podem vir de diversas maneiras e formatos, como API REST, CLI, gRPC ou sistemas de mensageria.

E como os dados não necessariamente chegam num formato compatível, as informações passam pelas camadas mais internas do sistema até chegarem ao nível de entidade, que são os fundamentos básicos de toda a aplicação.

Ocasionalmente recebemos informações que não são compatíveis com a nossa estrutura e mesmo nós, que criamos as entidades, organizamos e estruturamos os fundamentos, não precisamos saber ou ter que nos adaptar ao formato que os dados chegam.

Como o DTO pode nos ajudar?

Pensando nesses detalhes nós podemos criar um objeto, que é basicamente uma classe, dependendo do contexto no qual você está inserido. Mas a ideia é que você tenha um objeto totalmente anêmico, que vai apenas receber os dados naquele estado específico. Ele vai, por exemplo, fazer a serialização de JSON ou XML, preenchendo a sua propriedade exatamente num formato que a sua entidade, caso de uso ou seu serviço precisa receber, sem fazer qualquer contato entre as camadas inferiores do seu sistema.

Com o serviço preparado para receber o seu dado num determinado formato, o DTO pega as informações, processa, chama entidades e pode rodar as suas regras de negócio para te retornar com um resultado.

Como o resultado também é um DTO, você pode tê-lo num padrão de input, para os dados que entram no seu sistema; e ao mesmo tempo você pode ter um DTO de output, de dados que retornam a informação para a camada superior da sua aplicação, que podemos enviar para o cliente final.

De toda forma, o seu DTO pode ser um objeto totalmente anêmico – que é um método de modelar sistemas pela separação de camadas.

Validações

Existem muitas vertentes que trabalham com validações do DTO. Veja, por exemplo: Se você vai integrar dados externos a um banco de dados que contém erros, independente do que seja, você pode adicionar um validador mais simples, que não necessariamente vai validar as regras de negócio; mas ele pode validar, por exemplo, os formatos de entrada.

Então ao invés de você receber os dados, enviá-los para as camadas inferiores do sistema e passá-los adiante, o seu DTO pode fazer uma validação mais simples; e se já houver algo de errado, ele retorna o resultado de erro sem o risco de comprometer as informações.

Se você curtiu esse post e quer saber mais sobre comunicação entre sistemas, clique aqui, solicite contato e nós te ajudamos.

Veja também: O grande diferencial do NestJS

Confira diversos conteúdos no nosso canal do youtube.