Menu
CoddyTech

Параметры запроса

Часть раздела TypeScript и NestJS путешествия по Node.js на Coddy. Урок 3 из 17.

Клиенту, которому нужны только открытые задачи, не должно приходиться загружать все задачи и фильтровать их самостоятельно. Строка запроса — часть после ? — передаёт такие параметры.

@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