이 강의에서는 레이어드 아키텍처의 개념과 구조를 설명하고, NestJS를 기반으로 한 애플리케이션에서 각 계층이 어떻게 작동하는지에 대해 설명합니다. 주요 계층으로는 Service, Controller, Domain, DTO가 있습니다.
NestJS는 레이어드 아키텍처를 쉽게 구현할 수 있도록 도와주는 프레임워크입니다. 아래는 NestJS에서 레이어드 아키텍처를 구성하는 방법을 설명합니다.
설명: HTTP 요청을 처리하고, Service 계층의 메서드를 호출합니다.
예시:
// src/users/users.controller.ts
import { Controller, Get, Post, Body, Param } from '@nestjs/common';
import { UsersService } from './users.service';
import { CreateUserDto } from './dto/create-user.dto';
@Controller('users')
export class UsersController {
constructor(private readonly usersService: UsersService) {}
@Post()
create(@Body() createUserDto: CreateUserDto) {
return this.usersService.create(createUserDto);
}
@Get(':id')
findOne(@Param('id') id: string) {
return this.usersService.findOne(id);
}
}
설명: 비즈니스 로직을 처리하고, Domain Layer와 상호작용합니다.
예시:
// src/users/users.service.ts
import { Injectable } from '@nestjs/common';
import { CreateUserDto } from './dto/create-user.dto';
import { User } from './entities/user.entity';
@Injectable()
export class UsersService {
private readonly users: User[] = [];
create(createUserDto: CreateUserDto): User {
const user: User = {
id: this.users.length.toString(),
...createUserDto,
};
this.users.push(user);
return user;
}
findOne(id: string): User {
return this.users.find(user => user.id === id);
}
}