Поиск по сайту
Ctrl + K
Вопросы по Nest.js

Как использовать параметры маршрута в контроллере NestJS?

Параметры маршрутов в NestJS позволяют передавать данные через URL, что упрощает взаимодействие между клиентом и сервером. Это особенно полезно для получения информации о конкретных ресурсах, таких как пользователи или записи.

Основы работы с параметрами маршрутов

В NestJS параметры маршрутов определяются в пути контроллера и могут быть извлечены с помощью декоратора @Param(). Параметр маршрута обозначается двоеточием (:) перед его именем.

Пример использования параметров маршрутов

Давайте рассмотрим практический пример. Предположим, у нас есть контроллер пользователей, и мы хотим получить пользователя по его ID.

Шаг 1: Создание контроллера

Создаем файл users.controller.ts:

import { Controller, Get, Param } from '@nestjs/common';

@Controller('users')
export class UsersController {
  
  // Простой массив пользователей для примера
  private readonly users = [
    { id: 1, name: 'Alice' },
    { id: 2, name: 'Bob' },
    { id: 3, name: 'Charlie' },
  ];

  // Метод для получения пользователя по ID
  @Get(':id')
  getUserById(@Param('id') id: string) {
    const user = this.users.find(user => user.id === parseInt(id));
    if (!user) {
      return { message: 'Пользователь не найден' };
    }
    return user;
  }
}

Шаг 2: Регистрация контроллера в модуле

Затем мы должны зарегистрировать контроллер в модуле, например, в app.module.ts:

import { Module } from '@nestjs/common';
import { UsersController } from './users.controller';

@Module({
  imports: [],
  controllers: [UsersController],
  providers: [],
})
export class AppModule {}

Как это работает

  • В нашем контроллере UsersController мы определили маршрут GET /users/:id, где :id — это параметр маршрута.
  • При обращении к этому маршруту, метод getUserById будет вызван, и значение ID будет автоматически извлечено из URL и передано в метод в качестве аргумента.
  • Далее мы ищем пользователя по ID в массиве и возвращаем его или сообщение о том, что пользователь не найден.
  • Пример запроса

    Когда вы выполните запрос на GET /users/2, ответ будет:

    {
      "id": 2,
      "name": "Bob"
    }
    

    Если вы выполните запрос на GET /users/5, ответ будет:

    {
      "message": "Пользователь не найден"
    }
    

    Заключение

    Использование параметров маршрутов в NestJS — это отличный способ получать данные по конкретным запросам. Этот подход улучшает структуру вашего API и делает его более понятным для разработчиков и пользователей. Надеюсь, этот пример помог вам понять, как использовать параметры маршрутов в вашем приложении на NestJS!