Menu
CoddyTech

こんにちは、Nest

CoddyのNode.jsジャーニー「TypeScriptとNestJS」セクションの一部。レッスン 1/17。

Express では、各ルートは手動で登録する関数です。NestJS では、API の各部分に独自のクラスがあり、デコレーターによって各クラスの役割を Nest に伝えます。

@Controller('books')
export class BooksController {
    @Get()
    findAll() {
        return [{ title: 'Dune' }];
    }
}

コントローラーは、1 つのパスへのリクエストに応答します。@Controller('books') と @Get() はデコレーターです。アプリの起動時に Nest が読み取るラベルです。これらを組み合わせることで、findAll が GET /books に対応付けられ、Nest はメソッドの戻り値をステータス 200 の JSON として送信します。デコレーターのないメソッドが呼び出されることはありません。

モジュールには、ひとまとまりとして扱うクラスを列挙します。src/main.ts は NestFactory.create(AppModule) を呼び出します。AppModule は TasksModule をインポートし、そこには TasksController が列挙されています。自分のノートパソコンでは npm run start で起動しますが、ここでは Run が起動します。

challenge icon

チャレンジ

簡単
  • TasksControllerに、tasks配列を返すGET /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 に対してリストを返すメソッドを追加してください。
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

TypeScriptとNestJSのすべてのレッスン