Controllers

클라이언트로 부터 오는 request 를 받고 respons 를 반환

 

라우팅 방법 예시

example.controller.ts

import { Controller, Get } from '@nestjs/common';

@Controller('cats') // 주소를 설정 : "http://localhost:3000/cats"
export class CatsController {
  @Get() // routs
  findAll(): string {
    return 'This action returns all cats';
  }
  @Get(:id) // "http://localhost:3000/cats/1"
  findOne(): string {
    return 'This action returns a cat';
  }
  @Get('breed') // "http://localhost:3000/cats/breed"
  findOne(): string {
    return 'This action returns breed';
  }
  
  @Post()
  @HttpCode(201)  // 상태 코드 설정
  create() {
     return 'This action adds a new cat';
  }
}

 

 

@GET / @Post /@Patch / @Delete ... 아래에 다양한 데코레이터를 사용할 수 있다.

 

@HttpCode → 초기설정값 (default): 200 ,

       Express 의 방식처럼    findAll(@Res() response)     response.status(200).send() 가능! 하지만 추천 X

@Header

@Redirect

...

 

요청 데이터 사용방법

Body

요청데이터 예시

{
    "email" : "test@example.com"
    "passwoerd" : "qwertyu"
import { Controller, Post, Body } from '@nestjs/common';

@Controller('users')
export class UsersController {

  @Post()
  createUser(@Body('email') email: string, @Body('password') password: string) {

    // 유저 생성 로직 구현
  }
}

 

DTO 이용

아래이 DTO를 이용하여 같은 방식을 이용하여  데이터를 받을 수 있다.

 

createdUser.dto.ts

export class CreateUserDto {
      email: string;
      password: string;
}

 

....
  @Post()
  create(@Body() createUserDto: CreateUserDto) {
    // 요청 본문 데이터 사용
    const { email, password } = createUserDto;
....

 

 

Query

.....
  @Get()
  //  "http://localhost:3000/users?page=1&limit=2"
  findAll(@Query('page') page: number, @Query('limit') limit: number) {
    // Query Parameter 사용
    console.log('Page:', page);    // 1
    console.log('Limit:', limit);  // 2
  
 .....

 

Dto 를 사용하여 

 @Query('page') page: number, @Query('limit') limit: number
→@Query() findAllUserDto: FindAllUserDto

 

Param

import { Controller, Get, Param } from '@nestjs/common';

@Controller('users')
export class UsersController {
  @Get(':id') // users/ 1
  findOne(@Param('id') id: string) {

    // Path Variable 사용
    console.log('User ID:', id);

    // 특정 유저 조회 로직 구현
  }
}

 

Headers

....
  @Get()
  findAll(@Headers('authorization') token: string) {
    // 헤더 사용
    console.log('Authorization token:', token);

    // 유저 조회 로직 구현
  }
}

 헤더에 있는 내용을 받아 올때  key 값이 일치해야 한다\

 

 

참고자료

https://docs.nestjs.com/controllers

+ Recent posts