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.
Desafio
Fácil- Preencha
CreateTaskDtoemdto/create-task.dto.ts: umtitlee umdoneopcional. - Use-o no corpo de
POST /tasks. Uma nova tarefa recebedonedo corpo oufalsequando esse campo estiver ausente. - Envie
POST /taskscom{ "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 {}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.