DTOs
Parte de la sección TypeScript y NestJS del Journey de Node.js de Coddy. Lección 10 de 17.
@Body() body: { title: string } describe el cuerpo en un solo lugar, y nada lo comprueba: { "title": 42 } pasa directamente. Un DTO, un objeto de transferencia de datos, es una clase que describe qué contiene el cuerpo de una solicitud.
export class CreateOrderDto {
customer: string;
express?: boolean;
}
@Post()
create(@Body() dto: CreateOrderDto) {
return this.ordersService.create(dto);
}express? marca un campo opcional. El controlador y el servicio comparten la clase, así que coinciden en la estructura.
Un DTO es una clase, no una interfaz, por una razón. Las interfaces se eliminan junto con los demás tipos cuando se ejecuta el código, mientras que una clase sigue existiendo, y solo los decoradores de class-validator en una clase pueden comprobar un cuerpo en tiempo de ejecución. Esa es la siguiente lección.
Desafío
Fácil- Completa
CreateTaskDtoendto/create-task.dto.ts: untitley undoneopcional. - Úsalo para el cuerpo de
POST /tasks. Una tarea nueva tomadonedel cuerpo; usafalsecuando esté ausente. - Envía
POST /taskscon{ "title": "Pay rent", "done": true }y después con{ "title": 42 }.
Pruébalo tú mismo
// Describe el cuerpo de POST /tasks: un título y done cuando el cliente lo envía.
export class CreateTaskDto {}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.