مرحبًا بك في Nest
جزء من قسم TypeScript وNestJS في رحلة Node.js على Coddy. الدرس 1 من 17.
في Express، يكون كل مسار دالةً تسجّلها يدويًا. يمنح NestJS كل جزء من واجهة API صفه الخاص، وتخبر الديكورات Nest بوظيفة كل صف.
@Controller('books')
export class BooksController {
@Get()
findAll() {
return [{ title: 'Dune' }];
}
}يتولى المتحكّم الاستجابة للطلبات الواردة إلى مسار واحد. @Controller('books') و@Get() ديكورات: تسميات يقرؤها Nest عند بدء التطبيق. وهما معًا يربطان findAll بـ GET /books، ويرسل Nest ما تُعيده الدالة على هيئة JSON مع الحالة 200. ولا تُستدعى أبدًا أي دالة لا تحتوي على ديكور.
تسرد الوحدة الصفوف التي تنتمي إلى بعضها. يستدعي src/main.ts الدالة NestFactory.create(AppModule)؛ وتستورد AppModule الوحدة TasksModule، التي تسرد TasksController. على حاسوب محمول، ستشغّلها باستخدام npm run start؛ أما هنا، فيتولى زر Run ذلك.
التحدي
سهل- أضف طريقة إلى
TasksControllerتستجيب لطلبGET /tasksبمصفوفةtasks. - اضغط على تشغيل وأرسل
GET /tasks، ثمGET /taskلترى كيف يستجيب مسار بلا مسار مُعرّف.
جرّب بنفسك
import { Controller } 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 /tasks بالقائمة.
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.