Nest
nest.js시작
setting
$ npm i -g @nestjs/cli
$ nest new project-name
실행
pakage.json에서 어떻게 시작할지 확인

npm run start:dev로 시작하면 된다!
- app : 앱 구동
-
AppModule : 모든 것의 root가 되는 모듈
- AppController : routing을 hendle하는 부분
- AppService : stores controller for the router
Module
모듈은 한가지의 역할을 하는 앱이라고 볼수있다.
@Module() 데코레이터로 주석이 달린 클래스로, Nest가 애프리케이션 구조를 구성하는 데 사용하는 메타데이터를 제공한다.
모듈은 Nest에서 애플리케이션 구조를 범위로 구성하는데 사용된다.
컨트롤러와 공급자는 선언되는 모듈에 따라 범위가 지정되고, 모듈과 해당 클래스(컨트롤러 및 공급자)는 Nest가 DI(종속성 주입)을 수행하는 방법을 결정하는 그래프를 형성한다.
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
controller
기본적으로 url을 가져오고 함수를 실행하는 일을 한다.
컨트롤러는 들어오는 요청을 처리하고 클라이언트에 응답을 반환하는 역할을 한다.
express의 router같은 존재이다.
Get()
라우트 핸들러(메소드) 데코레이터
HTTP GET요청을 지정된 경로로 라우팅한다.
@Get()
getHello(): string {
return this.appService.getHello();
}
movie contoller만들기
$ nest g co
> contoller이름
입력을 통해 새로운 contoller을 생성할 수 있다.
컨트롤러를 통해 @Get실행하기
- movie/ 경로 :
@Get() - movie/1 경로 =>
@Get('/:id')=>@Param을 통해 id값을 가져올수있다.

무언가를 원하면 요청해야한다! (@Param)
직접 요청하지 않으면 아무것도 제공되지 않음
contoller 완성
@Controller('movies')
export class MoviesController {
@Get()
getAll() {
return 'This will return all movies';
}
@Get('/:id')
getOne(@Param('id') id: string) {
return `this will return one movie tith th id : ${id}`;
}
@Post()
create() {
return 'This will create a movie';
}
@Delete('/:id')
remove(@Param('id') movieId: string) {
return `This will delete a movie with the ${movieId}`;
}
//update
//@put은 모든 리소스를 업데이트한다.
//movie의 일부분만 업데이트할때는 patch사용
@Patch('/:id')
path(@Param('id') movieId: string) {
return `This will delete a movie with the id : ${movieId}`;
}
}
으응..? 이상하다
Nest가 아니고 Next를 공부해야되네요..