프로젝트/웹 사이트 만들기

백엔드 개발 - NestJS 리소스 자동 생성하기

Tech&Fin 2022. 6. 8. 17:56
반응형

 

목차 - 클릭하면 이동합니다.

     

    NestJS 리소스 생성하기

    지난 포스팅에서 NestJS의 장점에 대해서 간단히 설명드린바와 같이 NestJS는 백엔드 프로그램을 개발하는데 최적화되어있는 NodeJS 기반 프레임워크입니다.

     

    이번 시간에는 NestJS에서 리소스를 자동으로 생성하는 방법에 대해서 살펴볼 예정인데요. 쉽게 말하자면 컨트롤러와 서비스 그리고 데이터 구조를 정의하는 DTO등 모듈에 필요한 구조를 한번에 자동으로 만들어 주는 기능입니다.

     

    껍데기 파일이 자동으로 생성되고 모듈과 서비스가 자동으로 등록되기 때문에 개발자는 각각의 모듈, 서비스 등의 파일을 만들고 구조를 잡는데 신경을 쓰지 않고 비지니스 로직을 작성하는데만 집중할 수 있고 여러명이 개발을 함꼐 진행하더라도 각자의 스타일대로 개발하는 것이 아니라 구조가 정해지기 때문에 프로그램 개발 구조의 일관성을 유지하기 상당히 편리합니다.

     

    이번 포스팅을 통해
    1. NestJS의 리소스 생성 기능을 활용해 자동으로 모듈 단위 구조를 편리하게 만들 수 있습니다.
    2. 각각의 구조가 하는 역할에 대해서 이해할 수 있습니다.

     

    리소스 생성하기

    nest g resource 이름

    위의 명령어를 사용하여 Users라는 리소스를 생성해 보겠습니다. 어떤 Transport Layer를 사용하겠냐고 묻는데 저희는 REST API를 선택하도록 하겠습니다.

     

    그 다음에는 CRUD에 대한 entry points를 생성하겠느냐고 묻는데 C-Create, R-Read, U-Update, D-Delete는 사용자 관리 모듈에서는 필요한 기능이고 우리는 차후에 DB에 연동하여 사용자의 생성, 조회, 변경, 삭제 기능을 구현할 예정이기 때문에 Y를 선택해 만들도록 하겠습니다.

     

    단 한줄의 명령어에 몇 개의 대답만 간단히 하면 껍데기 파일들이 자동으로 만들어지고 app.modules.ts 파일에 서비스가 자동으로 추가됩니다.

     

    아톰 에디터에서 확인해 보니 src 폴더 아래에 여러가지 파일들이 자동으로 생성되어 있음을 확인할 수 있습니다.

     

    파일은 서버에만 생성되어 있으므로 src 폴더를 우클릭해 sync local <- remote를 눌러 서버에 생성된 파일을 로컬 작업 환경으로 가져올 수 있습니다.

     

    각각의 파일들이 하는 역할

    자동으로 생성된 파일들을 보면 일정한 규칙을 가지고 정해진 폴더 아래에 위와 같이 만들어져 있는데요. 그럼 각각의 파일이 어떤 역할을 하는지 주로 어떤 부분을 추가하고 수정해야 하는지 간단히 살펴보겠습니다.

     

    module (users.module.ts)

    module은 구조를 담당하는 부분으로 해당 모듈에서 어떤 컨트롤러와 어떤 서비스를 연결해서 사용할지에 대해서 작성하게 되며 리소스를 자동생성하게 되면 컨트롤러 및 서비스의 import는 물론 Module 구조에 등록까지 모두 자동으로 해 주기 때문에 당장 변경헤야 할 내용은 없습니다.

     

    controller(users.controller.ts)

    controller는 url의 요청과 매핑되어 request와 response를 처리하는 역할을 합니다. API 호출시 요청 url을 매핑하여 특정 서비스에 연결하여 로직을 처리한 후 결과를 돌려보내주는 역할을 합니다.

     

    controller에서는 request url에 대한 매핑과 해당 request를 처리할 서비스에 대한 연결이 주된 수정 사항입니다. 비지니스 로직은 controller에 작성하지 않습니다.

     

    service(users.service.ts)

    service는 비지니스 로직을 담당하는 역할을 하는 부분입니다. 각종 체크 로직 및 DB에 저장하는 등 실제 비지니스 로직은 여기에 작성하면 됩니다.

     

    그 외의 파일들

    .spec.ts 로 끝나는 파일들은 테스트를 위한 파일로 현재 단계에서는 사용하지 않을 예정이오니 삭제하거나 무시하셔도 됩니다.

     

    dto.ts 와 entity.ts 파일은 DB를 연동하는 것을 포스팅할 때 더 자세히 설명하도록 하겠습니다.

     

    실행해 보기

    해당 실행해 보면 구조를 이해하는데 도움이 되실 건데요. 자동으로 생성된 파일을 아무 수정없이 실행해 보도록 하겠습니다.

     

    서버의 공인IP:3000 뒤에 /users라는 경로를 입력하게 되면 users.controller.ts에 등록되어 있는 users의 GET method가 매핑되고 users.service.ts의 findAll() 함수가 실행되어 결과를 리턴하게 됩니다.

     

    즉 서버 실행 시 모듈에 등록되어 있는 controller와 service가 구동되며 url 요청이 들어오면 controller에서 매핑되는 부분을 찾아 service로 연결해 주고 service에서 비지니스 로직을 처리한 후 결과를 돌려주는 과정으로 요청이 처리 됩니다.

     

    마치며

    이번 시간에는 NestJS를 이용해 아주 편리하게 리소스를 생성하고 각 생성된 파일이 하는 역할에 대해서 알아보는 시간을 가졌습니다.

     

    오늘 살펴본 바와 같이 NestJS는 모듈단위 백엔드 개발에 최적화 되어 있어 개발 효율을 극대화 할 수 있는 프레임워크이오니 백엔드 개발을 염두에 두고 있는 분들은 사용해 보시는 것을 적극 추천 드립니다.

     

    다음에는 DB에 연결하여 실제 서비스에서 DB와 연동하여 데이터를 저장하고 읽고 수정하고 삭제하는 API를 개발해 보도록 하겠습니다.

     

    블로그를 구독하면 소식을 조금 더 빨리 받아보실 수 있습니다. 감사합니다.

    반응형