Nest.js

[Nest.js] Nest.js CRUD 실습 (REST API)

Hoo_Dev 2023. 1. 11. 16:55

간단한 CRUD 만들어보기

import { Controller, Delete, Get, Param, Post } from '@nestjs/common';
import { Body, Put, Query } from '@nestjs/common/decorators';

@Controller('movies')
export class MoviesController {
  @Get()
  getAll() {
    return 'This will return all movies';
  }
  // 주의 해야 할 점
  // :id 와 같은 동적 라우팅을 가진 getOne함수 아래에 같은 Get 메소드인 search함수가 있다면
    // search의 값이 동적 라우팅의 값이 돼버린다.
  @Get('search')
  search(@Query('year') searchingYear: string) {
    return `we are searching for a movie made after: ${searchingYear}`;
  }

  @Get(':id')
  getOne(@Param('id') movieId: string) {
    return `This will return one movie with the id: ${movieId}`;
  }

  @Post()
  cerate(@Body() movieData) {
    console.log(movieData);
    return movieData;
  }

  @Delete(':id')
  remove(@Param('id') movieId: string) {
    return `This will delete a movie with the id: ${movieId}`;
  }

  @Put(':id')
  patch(@Param('id') movieId: string, @Body() updateData) {
    return {
      updatedMovie: movieId,
      ...updateData,
    };
  }
}

간단한 CRUD를 작성해보았다.

 

핵심

  1. 데코레이터를 활용하여 메소드를 정의해준다. (정의한 데코레이터와 함수는 둘 사이에 공백이 있어선 안된다.)
  2. Post, Put, Patch 등 사용자에게 데이터를 받아야 하는 메소드들의 경우 함수에 직접 Params 혹은 Body를 받을 건지 명시를 해줘야 한다. (해주지 않으면 에러 발생)
  3. /:id 는 Dynamic routing과 같은 방식.