nestjs Контроллер, GET парамертры и параметры URL - пример
Primary tabs
Получать 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}`;
}
}
Где:
- JoiValidationPipe можно взять тут: https://docs.nestjs.com/pipes
- Отлаживать схему joi можно так: http://fkn.ktu10.com/?q=node/13025
- Также мб потребуется справится с ошибкой для пакета извлечения типа (может уже поправят к моменту когда вы читаете эти строки))
- Log in to post comments
- 2080 reads