Menu
CoddyTech

אובייקטי העברת נתונים (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 על מחלקה יכולים לבדוק גוף בקשה בזמן ריצה. זה הנושא של השיעור הבא.

challenge icon

אתגר

קל
  • מלאו את 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 {}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה TypeScript ו-NestJS