nestjs Контроллер, GET парамертры и параметры URL - пример

Получать GET-параметры и параметры из замого адреса запроса можно так (пример контроллера):

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

@Controller('test')
export class TestController {

  @Get('queryparams/:id')
  getTestGetparams(@Param('id') id, @Query('type') type): string {
    return `Url param: ${id}, Get param type = ${type}`;
  }
}

Валидация Get параметров с помощью joi (пример для Enum)

Пример:

import 'joi-extract-type';
import * as joi from 'joi';
import { Controller, Get, Param, Query } from '@nestjs/common';
import { JoiValidationPipe } from '../../pipes/validation.pipe';

enum MyType {
  FIRST = 'first',
  SECOND = 'second',
}

export const testGetParamsSchema = joi.object({
  type: joi.string().valid(MyType.FIRST, MyType.SECOND).required(),
});

export type TestGetParamsSchema = joi.extractType<typeof testGetParamsSchema>;

@Controller('test')
export class TestController {

  @Get('queryparams/:id')
  getTestGetParams(
    @Param('id') id,
    @Query('type') type,
    @Query(new JoiValidationPipe(testGetParamsSchema))
    query: TestGetParamsSchema,
  ): string {
    testGetParamsSchema.validate(query);
    console.log('-------------query', query);
    return `Url param: ${id}, Get param type = ${type}`;
  }
}

Где:

Key Words for FKN + antitotal forum (CS VSU):