Menu
CoddyTech

معاملات المسار

جزء من قسم TypeScript وNestJS في رحلة Node.js على Coddy. الدرس 2 من 17.

غالبًا ما يحتاج العميل إلى مهمة واحدة، لا إلى القائمة بأكملها. يمكن أن يحتوي المسار على مُعامل: جزء يتغير من طلب إلى آخر.

@Get(':isbn')
findOne(@Param('isbn') isbn: string) {
    return this.books.find((book) => book.isbn === isbn);
}

يطابق :isbn أي قيمة في ذلك الموضع من المسار، لذا يصل GET /books/978 إلى هذه الطريقة. يمرر @Param('isbn') تلك القيمة إلى الطريقة. وهي دائمًا نص: يعطي /books/42 السلسلة النصية '42'، وليس العدد 42 مطلقًا.

إذا لم تذكر الاسم، فإن @Param() يعطيك كائن كل المعاملات، { isbn: '978' }، بدلًا من القيمة.

challenge icon

التحدي

سهل
  • أضف GET /tasks/:id: فهو يعيد المهمة التي تحمل ذلك المعرّف.
  • أرسل GET /tasks/2، ثم GET /tasks/99، ولاحظ ما يعيده معرّف لا توجد له مهمة.

جرّب بنفسك

import { Controller, Get } from '@nestjs/common';

interface Task {
    id: number;
    title: string;
    done: boolean;
}

@Controller('tasks')
export class TasksController {
    private tasks: Task[] = [
        { id: 1, title: 'Write the README', done: true },
        { id: 2, title: 'Fix the login bug', done: false },
        { id: 3, title: 'Plan the sprint', done: false },
    ];

    @Get()
    findAll(): Task[] {
        return this.tasks;
    }
}

جميع دروس TypeScript وNestJS