[Nest JS] 따라하면서 배우는 Nest JS - (1) Nest JS의 기본 요소

wonnie1224·2022년 8월 17일
0

Nest JS

목록 보기
1/1

Nest JS 기본 로직 (동작 흐름)

클라이언트 : 브라우저, 서버 : nest js

  1. 클라이언트가 어떤 엔드포인트를 줌 ex) localhost:3000/GET
  • app.module.ts엔 AppModule 안에 controller, provider가 등록돼있음
  • main.ts에서 app(AppModule) 생성 및 실행
  1. 클라이언트(브라우저)의 요청이 app.controller로 가서 해당 엔드포인트(해당 요청)를 가지고 있는 핸들러가 app.Service를 리턴함
  2. app.service에서 hello world 출력하라고 컨트롤러에 다시 리턴함
  3. hello world를 출력해라는 걸 response로 클라이언트(브라우저)에 보냄

Nest JS를 사용해서 만드는 앱 구조

  • App 모듈 안에 Board 모듈(게시판 관련) & Auth 모듈(게시물 작성 권한 관련) 있음
  • 각 모듈 안에 Controller, Entity, Service 등이 있음

Module 생성 과정
1. Module 생성
2. Controller 생성
3. Provider 생성

📌 Nest JS 모듈이란 ?

  • 모듈 : @Module () 데코레이터로 주석이 달린 클래스
    -- @Module () 데코레이터는 Nest가 애플리케이션 구조를 구성하는 데 사용하는 메타 데이터를 제공함
  • 각 응용 프로그램에는 1개 이상의 모듈 (루트 모듈)이 있음. 루트 모듈은 Nest가 사용하는 시작점임.

  • 모듈은 밀접하게 관련된 기능 집합으로, 구성 요소를 구성하는 효과적인 방법입니다.
    (기능별로 만든다) ex) 유저 모듈, 주문 모듈, 챗 모듈...
  • 같은 기능에 해당하는 것들은 하나의 모듈 폴더안에 넣어서 사용함
    (UserController, UserService, UserEntity 다 같은 기능이기에 UserModule안에 넣음)
  • 모듈은 기본적으로 싱글 톤이므로 여러 모듈간에 쉽게 공급자의 동일한 인스턴스를
    공유 할 수 있음 (= 하나의 모듈을 여러 모듈에서 공동으로 사용 가능함)

📌 Controller 란 ?

컨트롤러 : 클라이언트로부터 들어오는 요청을 처리하고 클라이언트에게 응답을 반환

  • 클라이언트로부터 받은 http 요청에 해당하는 컨트롤러가 실행됨
    ex) user 관련 요청 -> user 컨트롤러가 동작 실행(컨트롤러 내부의 핸들러 실행)

  • 콘트롤러는 @Controller 데코레이터로 클래스를 데코레이션하여 정의
    -- 데코레이터는 인자를 Controller에 의해서 처리되는 "경로"로 받습니다

📌 Handler 란 ?

핸들러 : @Get, @Post, @Delete 등과 같은 데코레이터로 장식된 컨트롤러 클래스 내의 단순한 메서드

📌 Providers 란 ?

컨트롤러에 필요한 많은 기능들을 모두 컨트롤러 안에서 구현할 수 X
-> 기능별로 서비스, 헬퍼 등을 컨트롤러에서 사용할 수 있도록 컨트롤러에 넣어주는 것임 (주입)

📌 Service 란 ?

  • 종속성 주입 가능
  • @Injectable 데코레이터로 감싸져서 모듈에 제공
    -> 이 서비스 인스턴스는 애플리케이션 전체에서 사용 될 수 있음
  • 서비스는 컨트롤러에서 데이터의 유효성 체크를 하거나 데이터베이스에 아이템을 생성하는 등의 작업을 하는 부분을 처리함
profile
안녕하세요😊 인공지능을 공부하고 있는 대학생입니다 🙌

0개의 댓글