참조 ( 제가 존경하는 노마드 코더님의 강의영상 )
https://nomadcoders.co/nestjs-fundamentals/lectures/1945
먼저 완전 아무것도 없는 상태로 시작을 해보겠다.
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를 만들어보았다.
'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 |