Параметры запроса
Часть раздела TypeScript и NestJS путешествия по Node.js на Coddy. Урок 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', которая является истинным значением. Типы документируют ваш код и помогают редактору; сравнивайте значения запроса как текст.
Задание
Легко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));
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела TypeScript и NestJS
1Основы Nest
Классы и методыПривет, NestРегистрация контроллера4Guards, фильтры и перехватчики
GuardsПотренируйтесь самостоятельно: Песочница Express