Criamos um DTO (ArtistaRequest) para receber apenas os dados necessários para a criação de um novo artista através da API:
DTO ArtistaRequest
public record ArtistaRequest(string nome, string bio, string? fotoPerfil);
Endpoint POST
No endpoint POST, você recebe um ArtistaRequest e o transforma em um objeto Artista antes de salvá-lo no banco de dados:
app.MapPost("/Artistas", ([FromServices] GenericDAL<Artista> dal, [FromBody] ArtistaRequest artistaRequest) =>
{
var artista = new Artista(artistaRequest.nome, artistaRequest.bio, artistaRequest.fotoPerfil);
dal.Adicionar(artista);
return Results.Ok();
});
Processo de Criação de um Artista
- Recepção de Dados: O endpoint POST
/Artistasrecebe uma requisição contendo umArtistaRequestcomnome,bioefotoPerfil. - Transformação: O
ArtistaRequesté transformado em um objetoArtista:var artista = new Artista(artistaRequest.nome, artistaRequest.bio, artistaRequest.fotoPerfil); - Adição ao Banco de Dados: O objeto
Artistaé adicionado ao banco de dados:dal.Adicionar(artista);
Por Que Usar DTOs?
- Separação de Preocupações: Mantém a lógica de apresentação (os dados que você expõe ao cliente) separada da lógica de negócios (os dados que você usa internamente).
- Flexibilidade: Permite mudanças na lógica de negócios ou no modelo de dados interno sem impactar a interface pública da API.
- Documentação e Usabilidade: Simplifica a documentação da API e facilita para os consumidores da API entenderem quais dados são necessários para cada operação.
Conclusão
O uso de DTOs, como o ArtistaRequest, em sua API ajuda a encapsular e transferir dados de forma eficiente e segura, melhorando a clareza, segurança e manutenção da sua aplicação. Este padrão é uma boa prática para o desenvolvimento de APIs, pois facilita a comunicação entre diferentes camadas ou sistemas, minimizando a complexidade e a exposição desnecessária de dados.