Menu
CoddyTech

クエリパラメーター

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

未完了のタスクだけを必要とするクライアントが、すべてのタスクをダウンロードして自分で絞り込む必要はありません。クエリ文字列(?の後の部分)には、そのようなオプションを指定できます。

@Get()
findAll(@Query('author') author?: string) {
    if (!author) {
        return this.books;
    }
    return this.books.filter((book) => book.author === author);
}

@Query('author')は?author=Le%20Guinを読み取り、リクエストに含まれていない場合はundefinedを返します。

TypeScriptの型はコードの実行時に取り除かれます。Nodeが実行するのは型を取り除いた後に残るJavaScriptであり、型をチェックするものはありません。inStock?: booleanと書いても、Nestから渡されるのは文字列'false'であり、これは真として扱われます。型はコードの説明となり、エディターでの入力を助けます。クエリの値はテキストとして比較してください。

challenge icon

チャレンジ

簡単
  • GET /tasks?done=trueは完了したタスクのみを返します。GET /tasks?done=falseは未完了のタスクのみを返します。
  • doneを指定しない場合、GET /tasksはすべてのタスクを返します。
  • まずGET /tasks?done=falseを送信し、次にGET /tasks?done=trueを送信してください。

自分で試してみよう

import { Controller, Get, Param } 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;
    }

    @Get(':id')
    findOne(@Param('id') id: string): Task | undefined {
        return this.tasks.find((task) => task.id === Number(id));
    }
}
quiz icon腕試し

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

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

自分で練習してみよう: Expressプレイグラウンド