NestJS에서 Controller는 HTTP Request(요청)을 받아서 처리하고, Client에게 Response(응답)을 반환한다.
위의 사진을 참고하면 해당 request에 맞춰 해당 요청에 알맞은 Controller를 실행한다.
Controller는 @Controller
로 클래스를 데코레이션하여 정의하고, 인자로 경로를 받는다.
아래의 경우, user에서 사용하는 Controller임을 정의하는 것이다.
@Controller(user)
export class UsersController {
@Get()
getUsers():string{
return `user list`
}
}
위의 코드 중 @Get()
이라고 되어있는 부분이 있는데, 이것을 Handelr라고 한다.
Handler는 @Get
, @Post
, @Put
, @Delete
등 데코레이션으로 되어있는 Controller 클래스 내부에 있는 메소드이다.
예를들어, Controller 안에서 유저 리스트 가져오기, 유저 디테일 가져오기, 유저 생성,
유저 정보 수정, 유저 정보 삭제와 같은 핸들러가 있는데, 이 핸들러를 사용할때 @Http메소드
로 작성해준뒤 인자로 경로를 보내줄 수 있다.
// 유저 디테일의 경우
@Get('/id')
getUserById(
...
)
브라우저에서 요청을 받아오면, Controller에서 요청 경로에 따라서 해당 요청에 해당하는 핸들러로 처리를 한뒤 브라우저에게 다시 response를 보내주는 역할을 하는 것을 Controller라고 한다.
모듈을 생성할때처럼 Controller 역시 명령어로 생성한다.
nest g Controller 이름 --no-spec
ornest g Controller 이름
터미널에 위의 명령어를 입력하면 생성된다.
여기서 각각 의미하는 걸 알아보자면,
nest Cli를 이용해서
+ 만든다
+ Controller를
+ [이름] 이름으로 된
1️⃣ 명령어를 통해
2️⃣ 해당 폴더 안에 Controller가 생성되면
3️⃣ 자동적으로 해당 폴더.module.ts
이 생성된다.
4️⃣ 그리고 그 폴더에다가 Controller가 등록되어 사용할 수 있도록 해준다.
import { Module } from '@nestjs/common';
import { UsersController } from './users.controller';
@Module({
controllers: [UsersController],
})
export class UsersModule {}