Post

NestJS Controller

NestJS Controller

컨트롤러는 Client로부터 들어오는 요청을 처리 하고 해당 클라이언트에 응답을 반환하는 역할을 해줍니다 NestJS에서의 기본 컨트롤러를 만들기 위해서는 클래스와 데코레이터를 사용합니다 데코레이터(@)는 클래스를 필요한 메타데이터와 연결하고 Nest가 라우팅 맵을 만들 수 있도록 합니다

absolute




Controller 예제

1
2
3
4
5
6
7
8
9
10
import { Controller, Get } from '@nestjs/common';

@Controller('cats')
export class CatsController {
  @Get()
  findAll(): string {
    return 'This action returns all cats';
  }
}
  • (1) 데코레이터를 사용해서 HTTP 요청 메서드를 하나 생성하고 cats라는 접두사를 넣어서 Get/cats로 경로를 매핑시켜주었습니다
  • (2) 해당 경로로 사용해서 클라이언트가 요청을 하게 되면 사용자 정의 findAll()메서드가 동작하게됩니다 여기서 findAll이라는 이름은 임의적으로 생성한 이름이며 Nest는 해당 메서드 이름에 어떤 의미도 부여하지 않습니다
  • (3) findAll 메서드는 200 상태 코드와 This action returns all cats라는 string 값을 응답해줍니다




NestJS Controller 요청 데이터 접근하기

1
2
3
4
5
6
7
8
9
10
11
import { Controller, Get, Req } from '@nestjs/common';
import { Request } from 'express';

@Controller('cats')
export class CatsController {
  @Get()
  findAll(@Req() request: Request): string {
    return 'This action returns all cats';
  }
}

대부분의 라우팅 핸들러를 만들고나면 클라이언트가 보낸 요청의 세부 정보에 액세스가 필요한 경우가 많습니다 nest는 기본 플랫폼(Express)의 요청 객체 @Req()에 대한 액세스를 제공합니다. 핸들러의 서명에 데코레이터를 추가하여 nest에 주입하도록 지시하여 요청 객체에 액세스 할 수 있습니다




NestJS 요청 상세 데이터 관련 데코레이터

  • @Request(), @Req() req
  • @Response(), @Res()* res
  • @Next() next
  • @Session() req.session
  • @Param(key?: string) req.params/req.params[key]
  • @Body(key?: string) req.body/req.body[key]
  • @Query(key?: string) req.query/req.query[key]
  • @Headers(name?: string) req.headers/req.headers[name]
  • @Ip() req.ip
  • @HostParam() req.hosts




NestJS Controller의 다양한 메서드 라우팅 처리

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import { Controller, Get, Post } from '@nestjs/common';

@Controller('cats')
export class CatsController {
  @Post()
  create(): string {
    return 'This action adds a new cat';
  }

  @Get()
  findAll(): string {
    return 'This action returns all cats';
  }
}

위에서 Get메서드에 대한 라우팅 처리를 정의했던것처럼 Post메서드에 대한 정의도 가능합니다 해당 예제처럼 Post/cats, Get/cats 두가지의 라우팅처리가 가능하게됩니다




NestJS Controller의 표준 HTTP메서드 데코레이터

  • @Get()
  • @Post()
  • @Put()
  • @Delete()
  • @Patch()
  • @Options()
  • @Head()
  • @All()




NestJS Controller의 경로 와일드카드

1
2
3
4
@Get('ab*cd')
findAll() {
  return 'This route uses a wildcard';
}

abcdab_cdabecd?+*()-. 과 같이 정규 표현식 대응 항목의 하위 집합 사용이 가능하다

This post is licensed under CC BY 4.0 by the author.