Menu
CoddyTech

DTOs

Fa parte della sezione TypeScript e NestJS del percorso Node.js di Coddy. Lezione 10 di 17.

@Body() body: { title: string } descrive il corpo in un solo punto e non viene verificato da nulla: { "title": 42 } passa direttamente. Un DTO, ovvero un oggetto di trasferimento dei dati, è una classe che descrive cosa contiene il corpo di una richiesta.

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

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

express? indica un campo facoltativo. Il controller e il servizio condividono la classe, quindi concordano sulla sua struttura.

Un DTO è una classe, non un'interfaccia, per un motivo. Quando il codice viene eseguito, le interfacce vengono rimosse insieme agli altri tipi, mentre una classe continua a esistere; inoltre, solo i decoratori di class-validator applicati a una classe possono verificare il corpo in fase di esecuzione. Questa è la lezione successiva.

challenge icon

Sfida

Facile
  • Completa CreateTaskDto in dto/create-task.dto.ts: un title e un done facoltativo.
  • Usalo per il corpo di POST /tasks. Una nuova attività prende done dal corpo, false se è assente.
  • Invia POST /tasks con { "title": "Pay rent", "done": true }, poi con { "title": 42 }.

Provalo tu

// Descrivi il corpo di POST /tasks: un titolo e done quando il client lo invia.
export class CreateTaskDto {}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di TypeScript e NestJS