Menu
CoddyTech

إنشاء المهام

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

يرسل العميل الذي ينشئ مهمةً هذه المهمة بتنسيق JSON في نص الطلب، ويحتاج إلى استلام المهمة المحفوظة.

@Post()
create(@Body() review: { stars: number }) {
    this.reviews.push(review);
    return review;
}

يربط @Post() طلب POST على مسار وحدة التحكم بالطريقة، ويمرر إليها @Body() بيانات JSON التي تم تحليلها. يقرأ Nest نصوص JSON للطلبات تلقائيًا، لذا لا حاجة إلى إضافة express.json().

يرد Nest على طلب POST بالحالة 201 Created، وهي الحالة التي تشير إلى وجود مورد جديد، وعلى كل طريقة أخرى بالحالة 200. يمكن أن يغيّرها @HttpCode(200) على الطريقة؛ أما عند الإنشاء، فاتركها كما هي.

challenge icon

التحدي

سهل
  • يُرجع POST /tasks الرمز 201 مع المهمة الجديدة: رقم جديد id، وtitle وdone: false.
  • يعثر عليه GET /tasks/:id بعد ذلك.
  • أرسل هذا الطلب، ثم أرسل POST /tasks مع {} وتفقّد ما يتم حفظه.

جرّب بنفسك

import { Controller, Get, Param, Query } 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(@Query('done') done?: string): Task[] {
        if (done === undefined) {
            return this.tasks;
        }
        return this.tasks.filter((task) => task.done === (done === 'true'));
    }

    @Get(':id')
    findOne(@Param('id') id: string): Task | undefined {
        return this.tasks.find((task) => task.id === Number(id));
    }
}

جميع دروس TypeScript وNestJS