こんにちは、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 が起動します。
チャレンジ
簡単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 に対してリストを返すメソッドを追加してください。
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。