كائنات نقل البيانات (DTOs)
جزء من قسم TypeScript وNestJS في رحلة Node.js على Coddy. الدرس 10 من 17.
يصف @Body() body: { title: string } محتوى الجسم في موضع واحد فقط، ولا يتحقق منه شيء: يمر { "title": 42 } مباشرةً. كائن نقل البيانات DTO هو صنف يصف ما يحتويه جسم الطلب.
export class CreateOrderDto {
customer: string;
express?: boolean;
}
@Post()
create(@Body() dto: CreateOrderDto) {
return this.ordersService.create(dto);
}تشير express? إلى حقل اختياري. يشترك المتحكم والخدمة في الصنف، لذا يتفقان على البنية.
يوجد سبب يجعل DTO صنفًا لا واجهة. تُزال الواجهات مع الأنواع الأخرى عند تشغيل الشيفرة، بينما يظل الصنف موجودًا، كما أن مزخرفات class-validator على صنف فقط هي التي تستطيع التحقق من الجسم أثناء التشغيل. وهذا هو موضوع الدرس التالي.
التحدي
سهل- املأ
CreateTaskDtoفيdto/create-task.dto.ts: خاصيةtitle، وخاصيةdoneاختيارية. - استخدمه لمتن الطلب
POST /tasks. تأخذ المهمة الجديدة قيمةdoneمن المتن، وتكون قيمتهاfalseعند غيابها. - أرسل
POST /tasksمع{ "title": "Pay rent", "done": true }، ثم مع{ "title": 42 }.
جرّب بنفسك
// صِف محتوى طلب POST /tasks: عنوانًا، وdone عندما يرسلها العميل.
export class CreateTaskDto {}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.