npm i -g @nestjs/cli nest new 프로젝트명
node가 설치되어있다며, 저 두줄의 명령어만 실행하면 Nest 프로젝트 준비가 끝난다.
가끔 권한 문제가 생긴다면 sudo를 붙여서 실행해보기를 권한다.
아래의 설명을 보시면 알겠지만, 아직 공부 중에 있지만 JAVA - Spring 과 매우 유사하다. 공부할 수록 유사하다, 아마 Spring을 잘하셨던 분들은 익숙할 것 같다. 그리고 Express에 비해 매우 편한 부분 몇 가지를 제공한다.(Ex: javascript는 객체 or 배열로 주고 받는데, nest에서는 typescript로 결과를 알아서 JSON으로 직렬화해서 받아온다.)
- Nestjs는 효율적이고, 안정적이며, 확장에 용이한 서버 어플리케이션을 구축하기 위한 진보된 nodejs 프레임워크입니다.
- NestJS는 Express와 같은 서버 프레임워크로, Express는 굉장히 쉽게 서버를 만들 수 있게 만들어 줬지만 시스템 디자인 측면에서 지원하는 것은 거의 없기 때문에 이러한 문제를 해결하고자 나온 프레임워크가 NestJS이다.
- NestJS는 Typescript 기반의 OOP(Object Oriented Programming), FP(Functional Programming), FRP(Functional Reactive Programming)를 지원합니다.
SpringBoot나 Spring을 하셨던 분들이면 우리가 알고 있는 그 Cotroller와 역할이 매우 유사하다. GET,POST,DELETE 등의 요청들을 처리하고 URL을 나누는 라우터 역할을 한다. Controller는 Module안에 포함이며 Module에서 Controller를 정의해줘야 Nest는 비로소 Controller 안에 있는 메소드를 처리한다.
아래는 Controller의 예시이다.TypeScript에는 @Cotroller와 같이 데코레이터를 활용합니다. JAVA의 어노테이션과 비슷하지만 다르다고 합니다.
차이점은 나중에 좀 더 공부하고 정리해보도록 하겠습니다.@Controller('cats') export class CatsController{ @Get('all') findall(): string { return 'This action returns all cats' } @Get(':id') findOne(@Param('id') id:number):string{ return 'This action returns one cats' } @Get('musical') findMusical():string{ return 'This action returns musical CATs' } @Post('register') register(@Body() body: any):string{ return 'This User information' } @Post() @Header('Cache','none') Noheader(): string{ return 'Let start' } @Post() async create(@Body() createCatDTO: CreateCatDTO){ return 'this action adds new cat' } }