DTOs
Fait partie de la section TypeScript et NestJS du Journey Node.js de Coddy. Leçon 10 sur 17.
@Body() body: { title: string } décrit le corps à un seul endroit, et rien ne le vérifie : { "title": 42 } passe directement. Un DTO, ou objet de transfert de données, est une classe qui décrit le contenu du corps d’une requête.
export class CreateOrderDto {
customer: string;
express?: boolean;
}
@Post()
create(@Body() dto: CreateOrderDto) {
return this.ordersService.create(dto);
}express? indique un champ facultatif. Le contrôleur et le service partagent la classe, ils s’accordent donc sur la structure.
Un DTO est une classe, et non une interface, pour une raison précise. Les interfaces sont supprimées avec les autres types à l’exécution du code, tandis qu’une classe existe toujours, et seuls les décorateurs class-validator appliqués à une classe peuvent vérifier un corps à l’exécution. C’est le sujet de la prochaine leçon.
Défi
Facile- Renseignez
CreateTaskDtodansdto/create-task.dto.ts: untitleet undonefacultatif. - Utilisez-le pour le corps de
POST /tasks. Une nouvelle tâche prend la valeur dedonedans le corps, oufalsesi elle est absente. - Envoyez
POST /tasksavec{ "title": "Pay rent", "done": true }, puis avec{ "title": 42 }.
Essayez vous-même
// Décrivez le corps de POST /tasks : un titre et done lorsque le client l’envoie.
export class CreateTaskDto {}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.