إنشاء المهام
جزء من قسم 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) على الطريقة؛ أما عند الإنشاء، فاتركها كما هي.
التحدي
سهل- يُرجع
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));
}
}