📌 Nest js?
Node js 서버측 어플리케이션을 개발할 수 있는 프레임 워크이다.
자바스크립트와 타입스크립트를 모두 지원한다.
# nest js install
npm i -g @nestjs/cli
# create nest js project
nest new project-name
위의 명령어를 실행하게 되면
src/
│
├── app.controller.ts
│
├── app.module.ts
│
├── app.service.ts
│
└── main.ts
의 구조로 프로젝트가 생성되는데 각각의 파일의 역할을 살펴보자.
공식문서에서는 단일 경로가 있는 기본 컨트롤러
라고 명시되어있다.
앱의 controller는 req,res를 처리하는 로직이며, 특정 라우터에서 요청을 받아 처리한다.
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
}
AppController 위에 @Controller
를 선언한 후, get, post, delete, update
의 req 요청을 선언한다
@가 붙은 코드를 "데코레이터"라 칭한다.
위 코드의 경우 @Get
데코레이터가 사용되어 기본 url로 접속시, getHello()
함수가 실행된다.
또한 @Get()
은 HTTP Req의 엔드포인트를 지정한다.
예를 들어 @Controller("test")
, @Get("get")
라는 데코레이터를 사용하면 http://localhost:3000/test/get
으로 접속해야 한다.
@Get 이외에 @Post(), @Put(), @Delete(), @Patch(), @Options(), @Head(), @All()가 사용된다.
app.module.ts
이다.import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
@Module
데코레이터를 사용한다.
총 4가지의 속성을 가진다.
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello World!';
}
}
app.controller.ts
에서 사용되었던 getHello()
메서드가 여기에서 구현된다.import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
}
bootstrap();
위 코드에서, app변수는 NestFactory.create()
메서드가 AppModule
을 인자로 받아 Nest 앱 인스턴스를 생성한다.
생성된 인스턴스에 listen()
메서드를 사용하여 3000 포트에서 웹 서버를 실행하는 것이다.