😀 custom-decortators
ES2016 데코레이터는 함수를 반환하고 대상, 이름 속성 설명자를 인수로 사용할 수 있는 표현식 입니다.
@ 장식자 앞에 문자를 붙이고 장식하려는 항목의 맨 위에 배치하여 적용합니다. 데코레이터는 클래스,
메서드 또는 속성에 대해 정의할 수 있습니다.
NodeJS Express 기능과 같은 기능을하는 NestJS의 데코레이터
@Reuqest, @Req() / req
@Response(), @Res() / res
@Next() / next
@Sessio() / req.session
@Param(param?: string) / req.params, req.params[param]
@Body(param?: string) / req.body, req.body[param]
@Query(param?: string) / req.query, req.query[param]
@Headers(param?:string) / req.headers. req.headers[param]
@Ip() / req.ip
@HostParam() / req.hosts()
NestJS에가 지원하는 데코레이터 이외에 사용자 정의 데코레이터를 생성 가능하다.
user.decortator.ts
/**
* custom-decorator
*
* https://docs.nestjs.com/custom-decorators
*/
import { createParamDecorator, ExecutionContext } from "@nestjs/common";
export const User = createParamDecorator(
(data: unknown, ctx: ExecutionContext) => {
const request = ctx.switchToHttp().getRequest();
const { user } = request.query;
return user;
},
);
decortator.dto.ts
export class DecoratorDto {
user: string;
}
decortator.controller.ts
import { Controller, Get } from "@nestjs/common";
import { User } from "src/common/decorator/user.decorator";
import { DecoratorDto } from "./decortator.dto";
@Controller("/decorator/test")
export class DecoratorController {
@Get()
async findOne(@User() user: DecoratorDto) {
console.log('user: ', user);
return "decorator test..";
}
}
https://docs.nestjs.com/custom-decorators
'NestJS' 카테고리의 다른 글
[NestJS] custom-providers (0) | 2023.09.11 |
---|---|
[NestJS] Interceptors (0) | 2023.09.09 |
[NestJS] Guards (0) | 2023.09.08 |
[NestJS] Pipes (0) | 2023.09.06 |
[NestJS] exception-filters (0) | 2023.09.05 |