Menu
CoddyTech

DTOs

Parte da seção TypeScript e NestJS do Journey de Node.js da Coddy. Lição 10 de 17.

@Body() body: { title: string } descreve o corpo em apenas um lugar, e nada o valida: { "title": 42 } passa direto. Um DTO, objeto de transferência de dados, é uma classe que descreve o que o corpo de uma requisição contém.

export class CreateOrderDto {
    customer: string;
    express?: boolean;
}

@Post()
create(@Body() dto: CreateOrderDto) {
    return this.ordersService.create(dto);
}

express? marca um campo opcional. O controlador e o serviço compartilham a classe, então concordam com a estrutura.

Um DTO é uma classe, não uma interface, por um motivo. As interfaces são removidas junto com os outros tipos quando o código é executado, enquanto uma classe continua existindo, e somente decoradores de class-validator em uma classe podem validar um corpo durante a execução. Essa é a próxima lição.

challenge icon

Desafio

Fácil
  • Preencha CreateTaskDto em dto/create-task.dto.ts: um title e um done opcional.
  • Use-o no corpo de POST /tasks. Uma nova tarefa recebe done do corpo ou false quando esse campo estiver ausente.
  • Envie POST /tasks com { "title": "Pay rent", "done": true } e, em seguida, com { "title": 42 }.

Experimente você mesmo

// Descreva o corpo de POST /tasks: um título e done quando o cliente o enviar.
export class CreateTaskDto {}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de TypeScript e NestJS