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
/Artistas
recebe uma requisição contendo umArtistaRequest
comnome
,bio
efotoPerfil
. - 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.