ルートパラメータ
CoddyのNode.jsジャーニー「TypeScriptとNestJS」セクションの一部。レッスン 2/17。
クライアントが必要とするのは、リスト全体ではなく、特定のタスクであることがよくあります。パスにはパラメーターを含められます。これは、リクエストごとに変わる部分です。
@Get(':isbn')
findOne(@Param('isbn') isbn: string) {
return this.books.find((book) => book.isbn === isbn);
}:isbnはパスのその位置にある任意の値に一致するため、GET /books/978はこのメソッドに到達します。@Param('isbn')はその値をメソッドに渡します。値は常にテキストです。/books/42の場合、文字列'42'が渡され、数値の42が渡されることはありません。
名前を省略すると、@Param()は値ではなく、すべてのパラメーターを含むオブジェクト{ isbn: '978' }を返します。
チャレンジ
簡単GET /tasks/:idを追加します。このエンドポイントは、そのIDのタスクを返します。GET /tasks/2を送信し、次にGET /tasks/99を送信して、タスクが存在しないIDに対して何が返されるかを確認します。
自分で試してみよう
import { Controller, Get } 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(): Task[] {
return this.tasks;
}
}