Nest.js 입문하기

Knoa·2023년 12월 11일

nest.js 를 공부하려는 이유?

express 를 사용해봤기 때문에 api 서버를 만드는데 크게 문제가 없다.
하지만, express 는 깔끔하지 못하다는 느낌을 지울 수 없고, 하나부터 열까지 전부 일일히 세팅을 하는 것이 귀찮다. 그래서 nest 를 배워 사용하기로 했다.

뭘 배울 수 있나?

  1. nest 의 잘 짜여진 디자인 패턴을 익힐 수 있다.
    module, service, controller 로 정해진 룰대로 코드를 짜기 때문에 깔끔함을 강제로? 유지할 수 있다.
  2. spring 과 구성이 비슷해서 나중에 spring 을 공부하기 수월하지 않을까 하는 기대감.
    구조가 비슷해서 쉽게 익힐 수 있을 것 같다. java 를 공부해봤기 때문에 필요할 때 넘어갈지도 모르기 때문에 대비하는 차원이기도 하다.
    node 진영이 익숙한 나에겐 nest 가 그나마 진입이 쉽다는 판단이다.

nest 구조

Module

  • 모듈로 구성되어 있다. 예를 들면 유저 모듈, 인증 모듈 등 각각의 기능에 따라 구분하여 모듈을 만들고 app module (root module) 에서 합쳐준다. 그러면 nest 가 알아서 서로 관계를 정의해준다.

Controller

  • 컨트롤러에서는 route path 를 정의하는 부분으로 보인다.
    path '/' 를 정의하고 관련 http method 로 해당 호출에 대한 api 를 정의한다.
  • 요청과 응답에 대해 알고 있다.

Service

  • 비즈니스 로직을 정의한다. express 에서는 컨트롤러에 있었던 것들이다. 깔끔하게 분리해준다.
  • 서비스 단위에서는 요청과 응답에 대한 정보는 모른다.
  • 여러 부분에 재사용할 수 있다.
  • 테스트 하기에도 편리하다.

부가적인 기능

  1. Intercepter
    • service 에서 비즈니스 로직을 실행하고 반환되는 객체나 값이 각각의 service 마다 동일한 형태를 따른다면 intercepter 를 정의하여 중복된 코드를 줄일 수 있다.
  2. service 에서 반환되는 값을 굳이 res.json(value) 로 감싸지 않아도 json 으로 형태를 변환하여 반환되도록 설계되어 있다.
    • req,res 를 무조건 불러와 사용해야하는 express 보다 추상화가 잘되어 있어 불편함을 해소해줘 편리하다.
profile
SW 개발자

0개의 댓글