Menu
CoddyTech

タスクの作成

CoddyのNode.jsジャーニー「TypeScriptとNestJS」セクションの一部。レッスン 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 に { "title": "Buy milk" } を送信すると、新しいタスクとともに 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のすべてのレッスン