Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Como funciona DTO no nosso contexto

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

  1. Recepção de Dados: O endpoint POST /Artistas recebe uma requisição contendo um ArtistaRequest com nome, bio e fotoPerfil.
  2. Transformação: O ArtistaRequest é transformado em um objeto Artista:
    var artista = new Artista(artistaRequest.nome, artistaRequest.bio, artistaRequest.fotoPerfil);
    
  3. 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.

1 resposta
solução!

Oii Guilherme, tudo bem?

Muito obrigada por compartilhar suas ideias sobre o uso de DTOs (Data Transfer Objects) em APIs construídas com ASP.NET Core.

Continue os bons estudos.

Um abraço.