[NestJS] Module, Controller, Service

yongtae·2024년 4월 19일

NestJS

목록 보기
2/2
post-thumbnail

Module

  • 모듈이란 애플리케이션의 일부분, 한 가지의 역할을 하는 부분
    (ex. 유저 로그인 모듈, 사진 모듈, 비디오 모듈…)
  • controller와 provider를 가짐
  • 위 AppModule은 모든 것의 루트 모듈.
    • 루트모듈에선 우리가 구현하는 모든 것을 import할 예정이다.

Controller

  • controller는 기본적으로 url을 가져오고 함수를 그에 해당하는 함수를 실행함 (express의 라우터와 동일한 역할이다.)
  • URL 매핑, 리퀘스트를 받아 쿼리, 바디 등을 넘겨주는 역할을 한다.
  • /hello URL을 접속하면 sayHello()를 호출
    • 맨처음 /는 붙여도 안붙여도 된다.
  • @Get() 외에도 다른 다양한 HTTP Method 활용 가능

Service

  • AppController에서 getHello()의 경우는 appService를 참조한다.
  • Nest의 구조에서는 ControllerService를 구분시킴.
  • Controller : URL을 가져와 호출하는 역할
  • Service : URL에 해당하는 함수의 세부 비즈니스 로직을 구현하는 역할
  • 즉, AppController의 SayHello()에서 ‘Hello everyone’을 바로 리턴하는게 아닌,
    app.controller.ts
    app.service.ts
    • 위와 같이 구현되는게 이상적인 방식이다.
    • 단, 위 예시와 같이 컨트롤러의 함수명(sayHello)과 서비스의 함수명(getHi)은 달라도 됨.

Nest 구조 정리

  • 루트 모듈 아래에 기능 별로 모듈을 두고, 모듈은 url별로 컨트롤러를 가진다.
  • 컨트롤러는 각 url별로 비즈니스 로직을 서비스에서 구현한다.
  • AppController, AppService는 최상위 URL(/)에 대한 라우팅과 로직을 구현하기 위해 사용된다고 생각하면 된다.
profile
성장하는 프런트엔드 개발자

0개의 댓글