Search

Decorator

대분류
프레임워크
소분류
Nest.js
설명
nestjs 기본 함수 구조
유형
구조
주요 레퍼런스
https://medium.com/google-developers/exploring-es7-decorators-76ecb65fb841
https://docs.nestjs.com/custom-decorators
최종 편집 일시
2024/10/31 03:30
생성 일시
2024/01/15 05:52
13 more properties

Decorator

클래스 위의 함수
꾸며주는 함수나 클래스랑 붙어있어야 함 = 데코레이터랑 함수 사이에 빈칸이 있으면 안됌
틀린 예
export class AppController { constructor(private readonly appService: AppService) {} @Get() getHello(): string { return this.appService.getHello(); } }
TypeScript
복사
옳은 예
export class AppController { constructor(private readonly appService: AppService) {} @Get() getHello(): string { return this.appService.getHello(); }
TypeScript
복사
종류
데코레이터
역할
호출시 전달되는 인자
선언 불가능한 위치
클래스 데코레이터
클래스의 정의를 읽거나 수정
(constructor)
d.ts 파일, declare 클래스
메서드 데코레이터
메서드의 정의를 읽거나 수정
(target, propertyKey, propertyDescriptor)
d.ts 파일, declare 클래스, 오버로드 메서드
접근자 데코레이터
접근자의 정의를 읽거나 수정
(target, propertyKey, propertyDescriptor)
d.ts 파일, declare 클래스
속성 데코레이터
속성의 정의를 읽음
(target, propertyKey)
d.ts 파일, declare 클래스
매개변수 데코레이터
매개변수의 정의를 읽음
(target, propertyKey, parameterIndex)
d.ts 파일, declare 클래스

와일드카드 라우팅

패턴기반 라우터
예시
@Get('ab*cd') findAll() { return 'This route uses a wildcard'; }
TypeScript
복사

@Get()

expressjs의 get router과 유사 - 조회 @Get('/') function(param: type): returntype {return} = app.get('/', (param) => {})
url을 가져와 함수로 매핑한다.
@Get() // = '/#' @Get('/hello') // /hello sayHello(): string { return 'hello everyone'; }
TypeScript
복사

@Post()

expressjs의 post router과 유사 - 생성, 수정
@Post() function(param: type): returntype {return} = app.post('/', (param) => {})
@Post() create(@Body() movieData: CreateMovieDto) { return this.moviesService.create(movieData); }
TypeScript
복사

@Delete()

resource의 삭제를 요청
@Delete(':id') remove(@Param('id') movieId: number) { return this.moviesService.deleteOne(movieId); }
TypeScript
복사

@Put()

서버에게 전체 resource의 업데이트 요청

@Patch()

서버에게 일부 resource의 업데이트를 요청
// @Put() // 모든 리소스 업데이트 @Patch(':id') // 일부 특정 리소스만 업데이트 path(@Param('id') movieId: number, @Body() updateData: UpdateMovieDto) { return this.moviesService.update(movieId, updateData); }
TypeScript
복사

@Redirect(url, [status])

http status code 기본값 : 302
예시
@Get("docs") @Redirect("https://docs.nestjs.com") getDocs(@Query("version") version) { if (version && version === "7") { return {url: "https://docs.nestjs.com/v5/"}; } }
TypeScript
복사

Param decorators

Nest
Express
설명
@Request(), @Req()
req
요청
@Response(), @Res()
res
응답
@Next()
next
@Session()
req.session
세션
@Param(param?: string)
req.params / req.params[param]
라우트 파라미터 인수 (/123)
@Body(param?: string)
req.body / req.body[param]
post 방식으로 넘어오는 인수 값 (JSON)
@Query(param?: string)
req.query / req.query[param]
get방식으로 넘어오는 쿼리 스트링 인수 (/123?honey=321)
@Headers(param?: string)
req.headers / req.headers[param]
HTTP 헤더 값 (key:? value:?)
@Ip()
req.ip
클라이언트의 IP Address
@HostParam()
req.hosts