노마드 코더님의 nest.js 기초 강의를 토대로 필기한 것입니다.
nest.js란

node.js의 웹 프레임워크로, express위에서 작동하는 프레임워크이다. express와 fastify 두 가지가 전부 호환되므로 매우 실용적인 프레임워크라고도 할 수 있다.
프로젝트 구조

nestjs는 Spring과 유사하게 비즈니스 로직을 담당하는 service와 엔드포인트에 매핑되는 controller가 분리 되어있다.
src 안에는 main, app.controller, app.service, app.module이 존재한다.
main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
}
bootstrap();
bootstrap()은 함수명 변경 가능하다.
express.js의 app.js와 같은 기능을 한다.
앱의 설정에 대한 코드 작성 부분
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 에노테이션을 여기에선 데코레이터 라고 부른다. 해당 앱에 어떤 파일이 controller이고, 어떤 파일이 service로서 역할을 하는지 명시해주는 역할이다. (providers)
(Spring으로 치면 Bean으로 등록해주는 것과 유사)
AppModule은 루트 모듈로서 어플리케이션의 일부분이다. 따라서 모든 서비스와 컨트롤러는 모두 AppModule에 속해야 한다.
app.controller.ts
import { Controller, Get, Post } from "@nestjs/common";
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {
}
@Get() // 데코 레이터
getHello(): string {
return this.appService.getHello();
}
// get request
@Post('/hello') // 데코레이터는 꾸며주는 함수나 클래스와 붙어있어야 함
sayHello(): string {
// 리턴 타입
return 'Hello everyone!';
}
}
- express.js의 router, Spring의 controller와 같은 기능을 한다.
- endpoint에 대한 작업을 처리해주는 코드라고 생각하면 편할 것 같다.
- 특정 클래스 안에 함수로 이루어져 있는 함수형 프로그래밍 유형을 띈다.
만약에 특정 엔드포인트에 접근하려고 했을 때, 404 ERROR가 발생하는 경우 NestJS가 알아서 에러를 발생시킨다
(너무 편리한 NestJS)
ex> Get(’hello’)를 삭제했을 때

app.service.ts
import { Injectable } from '@nestjs/common';
@Injectable() // 데코 레이터
export class AppService {
getHello(): string {
return 'Hello Nest!';
}
getHi(): string {
return 'Hello everyone';
}
}
NestJS는 Spring과 동일하게 controller와 business logic layer를 분리하는 것을 선호한다.
- controller - url을 가져오는 역할
- service - 비즈니스 로직을 구현하는 역할
따라서 서비스에서 구현한 것들을 컨트롤러에서 import하여 가져오는 것이다.
프로젝트 실행
package.json에서 실행을 위한 키워드 확인
- start
- start:dev (개발환경에서 실행)
- npm run start:dev
- start:debug
- start:prod
'Back-end > Nest.js' 카테고리의 다른 글
[Nest.js] 3. Testing (0) | 2024.07.02 |
---|---|
[Nest.js] 2. Nest.js로 REST API 만들기 (0) | 2024.07.02 |