[Nest.JS] Nest 구조, CRUD 구현하기(1)

장현수·2023년 7월 14일
0

Nest.JS

목록 보기
3/9

1. Nest Project 생성

nest new 프로젝트명

을 입력하면 프로젝트명의 폴더가 생성되고, 그 안에 nest 프로젝트 파일이 만들어진다.
nest 프로젝트를 생성하면 자동으로 .git이 생성되기 때문에, 이미 git에 연결해놓은 폴더로 따로 관리하고 싶다면 .git 파일을 삭제해줘야 한다.
(이전 글 참조 : https://velog.io/@nyondoo/Git-Nest-Nest.js-프로젝트-.git-파일-제거-상위-폴더에서-관리하기-nest.js-git-안될-때)

프로젝트 폴더 안에는 크게 main.ts, app.controller, app.service, app.module 파일이 있다.

2. 구조와 역할 살펴보기

main.ts

main.ts 파일은 프로젝트의 뿌리라고 생각하면 된다.

Controller

controller에서는 클라이언트단의 HTTP 요청을 처리하고 응답을 보내는 역할을 한다. 복잡한 처리 로직은 service와 같은 provider에 보내서 처리하도록 한다.

생성시에는

@Controller()

데코레이터를 사용해서 선언해준다.

@Controller('prefix')

데코레이터에 라우팅 주소를 설정해서 그룹별로 관리할 수도 있다.

Controller에서 Service를 사용하기 위해 의존성 주입을 한다.

Service 클래스를 정의해 준 뒤, Controller에서는

constructor(private appService: AppService) {}

와 같이 생성자를 통해 주입된다. 여기서 appService는 생성자를 통해 이 클래스의 property가 되기 때문에, 클래스 내에서 this로 참조할 수 있다.

Services

요청 처리의 로직은 서비스에서 담당한다.
서비스는

@Injectable

데코레이터로 선언한다.

Module

모듈 역시

@Module

데코레이터로 선언된 클래스이다.

애플리케이션에는 최소한 하나의 모듈인 루트 모듈이 있다. 프로젝트 생성 시 만들어지는 app.module이 루트모듈이다.

모듈은 Nest 가 Module 과 Provider 간의 관계, 그리고 종속성 관리를 위해 사용하는 내부적인 데이터 구조이다.

모듈의 속성은 다음과 같다.

자세한 것은 역시 직접 만들어보면서 깨우쳐야 할 것...

profile
개같이 발전하자 개발

0개의 댓글