본문 바로가기
Frameworks/Nest.js

[Nest.js] Controller

by junseokoo 2025. 4. 9.

  • Controller는 들어오는 요청을 처리하고 클라이언트에 응답을 반환하는 역할
    • Client Side -> HTTP Request -> Controller
  • Controller의 목적은 특정 요청을 수신하는 것이다. 라우팅 메커니즘은 어떤 컨트롤러가 어떤 요청을 받는지 제어한다.
  • 기본 Controller를 만들기 위해 클래스와 데코레이터를 사용한다.데코레이터는 클래스를 필수 메타데이터와 연결하고 Nest가 라우팅 맵을 생성할 수 있게 한다.

Routing

  • @Controller() 데코레이터를 사용한다.
// user.controller.ts
import { Controller, Get } from '@nestjs/common';

@Controller('user')
export class CatsController {
  @Get('findUser') // 경로 지정 /user/findUser 
  findAll(): string {
    return 'This action returns all cats';
  }
}
// Controller만 사용하려면 $ nest g co || controller user

Rout parameters

  • 동적 데이터를 받아야하는 경우 정적 경로가 있는 경로는 작동하지 않는다.
  • 매개변수로 경로를 정의하기 위해 경로에 매개변수 토큰을 추가하여 요청 URL의 해당 위치에서 동적 값을 캡처할 수 있다.
  • @Param() 데코레이터를 사용해보자. 이는 메서드 매개변수에 사용되며 매개변수를 메서드 본문 내 메서드 매개변수의 속성으로 사용할 수 있게 한다.
// user.controller.ts
@Get(':id')
findOne(@Param('id') id: number) {
  return `This action returns a #${id} user`;
}

Request payloads

  • POST 요청시 @Body() 데코레이터를 추가해보자.
  • 이전에 TypeScript를 사용하는 경우 DTO(Data Transfer Object) 스키마를 결정해야한다.
  • DTO는 데이터가 네트워크를 통해 전송되는 방법을 정의하는 객체이다.
// create-user.dto.ts

export class CreateUserDto {
  username: string;
  password: number;
}

// user.controller.ts
@Post('/signup')
async signUp(@Body() createUserDto: CreateUserDto) {
  return 'sign up!''
}
  • update user & Delete User
// user.controller.ts
import { Controller, Get, Query, Post, Body, Put, Param, Delete } from '@nestjs/common';
import { CreateUserDto, UpdateUserDto } from './dto';

@Controller('user')
export class CatsController {
  @Post()
  async create(@Body() createCatDto: CreateCatDto) {
    return 'This action adds a new cat';
  }

  @Put(':id')
  async update(@Param('id') id: number, @Body() updateCatDto: UpdateCatDto) {
    return `This action updates a #${id} cat`;
  }

  @Delete(':id')
  async remove(@Param('id') id: number) {
    return `This action removes a #${id} cat`;
  }
}

 

'Frameworks > Nest.js' 카테고리의 다른 글

[Nest.js] Module  (0) 2025.04.09
[Nest.js] Provider  (0) 2025.04.09
[Nest.js] MySQL Connect  (0) 2025.04.09
[Nest.js] Start  (0) 2025.04.09