Menu
CoddyTech

Параметры маршрута

Часть раздела TypeScript и NestJS путешествия по Node.js на Coddy. Урок 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' }, а не само значение.

challenge icon

Задание

Легко
  • Добавь GET /tasks/:id: он возвращает задачу с этим идентификатором.
  • Отправь запрос GET /tasks/2, затем GET /tasks/99 и посмотри, что возвращается для идентификатора, которому не соответствует задача.

Попробуйте сами

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;
    }
}

Все уроки раздела TypeScript и NestJS