Open kakasoo opened 10 months ago
src ├── main.ts ├── app.module.ts ├── app.controller.ts ├── app.service.ts ├── modules │ ├── module1 │ │ ├── module1.module.ts │ │ ├── module1.controller.ts │ │ ├── module1.service.ts │ │ └── ... │ ├── module2 │ │ ├── module2.module.ts │ │ ├── module2.controller.ts │ │ ├── module2.service.ts │ │ └── ... │ └── ... └── ... NestJS는 모듈화, 의존성 주입을 강조하여 애플리케이션의 확장성과 유지보수성을 향상시킨다. 의존성 주입 (Dependency Injection) : 의존 관계를 외부에서 결정. 런타임 시점의 의존 관계를 외부에서 주입.
@Module()
데코레이터가 달린 클래스
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
클라이언트의 request를 처리하고, response를 반환
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();
}
}
@Controller
데코레이터로 기본 컨트롤러 정의@Get
, @Post
, @Delete
와 같은 Handler 포함@Get
은 HTTP 요청에 대한 특정 엔드 포인트 처리 (API 엔드포인트 : 클라이언트가 API에 접근할 수 있는 URL)의존성을 주입할 수 있는 Nest의 기본 개념
@Injectable()
데코레이터로 선언.
@UsePipe
데코레이터로 사용. 핸들러 레벨에서 모든 파라미터에 적용Data Transfer Object. 계층 간 데이터 전송을 위해 도메인 모델 대신 사용되는 객체
클라이언트로부터 들어온 요청을 각 컨트롤러의 핸들러가 처리하기 전 코드를 실행할 수 있는 기능
폴더 구조를 이렇게 레이어 (계층) 단위로 나눌 수도 있습니다!
이것 또한 먼저 시작하신 분이 있습니다. 앞의 분을 보고 배우되 자기가 이해한 그대로의 언어로 작성해주세요. 각각이 어떤 구조인지 심층적으로 파고들 게 아니라면 일단 역할에 대한 이해가 자기 언어로 설명하는 게 낫습니다.