728x90
반응형

참조 ( 제가 존경하는 노마드 코더님의 강의영상 )

https://nomadcoders.co/nestjs-fundamentals/lectures/1945

 

All Courses – 노마드 코더 Nomad Coders

초급부터 고급까지! 니꼬쌤과 함께 풀스택으로 성장하세요!

nomadcoders.co

 

 

먼저 완전 아무것도 없는 상태로 시작을 해보겠다.

 


 

Nest.js 에서는 generate라는 훌륭한 명령어가 있다.

커맨드 라인에 관하여 상당히 편리하게 되어있기 때문에 우리는 거의 모든 걸 편리하게 생성할 수 있다.

 

$ nest

이 명령어를 치면 우리가 사용할 수 있는 명령어들이 나타난다.

 

그 중 generate 옵션을 살펴보면,

 

이런식으로 콘솔에 나타난다. controller를 생성해보자.

 

$ nest g co

 

 

Controller의 이름을 어떻게 사용할건지에 대해 물어본다.

 

 

movies라고 입력하면 

 

import { Module } from '@nestjs/common';
import { MoviesController } from './movies/movies.controller';

@Module({
  imports: [],
  controllers: [MoviesController],
  providers: [],
})
export class AppModule {}

 

자동으로 movies라는 폴더가 생성되고, 루트 모듈 파일에 자동으로 Moviescontroller가 생성되는걸 확인할 수 있다

 

 

movies.controller.ts

 

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

@Controller('movies')
export class MoviesController {

    @Get()
    getAll(){
        return 'hello movies'
    }
}

 

movies.controller.ts 파일을 고치고 npm run start를 실행해보면..!

 

 

이렇게 에러메세지가 뜬다.. 왜그럴까?

 

 

기본적인 Controller 데코레이터에서는 비어있지만, 명령어로 만든 Controller는 이와같이 안에 문자열이

생성된 채로 만들어진다. 때문에 마지막 ip주소 마지막 부분에 /movies를 붙이면

 

이렇게 잘 뜨는 것을 확인 할 수 있을것이다.

 

 

이번에는 파라미터를 가지는 GET메소드를 구현해보자!

 

movies.controller.ts

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

@Controller('movies')
export class MoviesController {

    @Get()
    getAll(){
        return 'hello movies'
    }

    @Get('/:id')
    getOne(){
        return 'hello one movie'
    }
}

 

/:id에 값이 들어올 경우 정상적으로 뜨는 것을 확인할 수 있다. (ex localhost:3000/movies/1)

 

 

또한 다음과 같이 파라미터의 자료형을 지정하고 자유자재로 쓸 수도 있다.

 

movies.controller.ts

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

@Controller('movies')
export class MoviesController {

    @Get()
    getAll(){
        return 'hello movies'
    }

    @Get('/:id')
    getOne(@Param('id') movieid: String){
        return `id is ${movieid}`
    }
}

 

 

자 그럼 이번엔 다른 메소드들도 사용해서 controller의 틀을 잡아보자.

 

movies.controller.ts

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

@Controller('movies')
export class MoviesController {

    @Get()
    getAll(){
        return 'hello movies';
    }

    @Get('/:id')
    getOne(@Param('id') movieId: String){
        return `id is ${movieId}`;
    }

    @Post()
    create() {
        return 'This will create a Movie';
    }

    @Delete('/:id')
    remove(@Param('id') movieId:String) {
        return `${movieId} id를 가진 movie를 삭제합니다.`
    }

    @Patch('/:id')
    patch(@Param('id') movieId:String) {
        return `${movieId} id를 가진 movie를 변경합니다.`
    }
}

 

 

여기까지 멋진 Controller를 만들어보았다.

728x90
반응형

'Back-End > Nest.js' 카테고리의 다른 글

Nest.js | REST API | Movies Service(1)  (0) 2021.09.28
Nest.js | REST API | More Routes  (0) 2021.09.28
Nest.js | 개요 | Modules  (0) 2021.09.24
Nest.js | 개요 | Service  (0) 2021.09.24
Nest.js | 개요 | Controller(2)  (0) 2021.09.24

+ Recent posts