Вопрос проверяет способность создавать кастомные декораторы для добавления специфической функциональности.
Кастомные декораторы в NestJS — это декларации, которые можно использовать для изменения поведения классов, методов или параметров. Чтобы создать декоратор для логирования имени метода и аргументов, используйте createParamDecorator из NestJS.
Декораторы в NestJS позволяют добавлять поведение к определенным элементам приложения (например, методам или параметрам).
Пример кастомного декоратора:
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
export const LogMethod = createParamDecorator(
(data: unknown, ctx: ExecutionContext) => {
const methodName = ctx.getHandler().name;
const args = ctx.switchToHttp().getRequest().body;
console.log(`Method: ${methodName}, Arguments: ${JSON.stringify(args)}`);
return null; // Возвращаемое значение декоратора
},
);
Использование декоратора в контроллере:
import { Controller, Post, Body } from '@nestjs/common';
@Controller('example')
export class ExampleController {
@Post()
@LogMethod()
exampleMethod(@Body() body: any) {
console.log('Method logic executed');
}
}
Кастомные декораторы упрощают реализацию кросс-функциональной логики (например, логирование).