본문 바로가기
NestJS

[NestJS] custom-decorators

by NJ94 2023. 9. 9.

😀 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