오늘은 Service에 대해 알아보려 한다.
Nest는 객체지향적 방식으로 종속성을 설계하기 때문에 서비스, 리포지토리, 팩토리, 헬퍼 등이 프로바이더로 취급되며 사용된다.
서버에서의 처리 과정을 다음과 같이 크게 3가지로 분리된다.
Controller
- 클라이언트의 요청을 받음
- 요청에 대한 처리는 서비스에게 전담
- 클라이언트에게 응답
Service
- 사용자의 요구사항 처리
- DB 정보가 필요한 경우 Repository에게 전담
Repository
- DB 관리(연결, 해제, 자원 관리)
- DB CRUD 작업 처리
그럼, Nest.js에서 Service를 구현하는 것을 알아보자. 먼저, Nest CLI를 통해 Service를 생성해준다.
서비스 name은 controller와 똑같이 movies로 지정하였다.
자동으로 movies 디렉토리 하위에 movies.service.ts가 생성된 것을 볼 수 있다.
DB에 연결하기 전 InMemory에서 간단하게 DB를 구현하기 위해 movie의 인터페이스를 생성한다.
movies 아래에 entity 폴더를 생성하고 movies.entity.ts를 생성해보자
이후 service에 Movie Array를 생성하고 기존에 생성한 REST API에 맞게 각 함수를 생성한다.
코드는 다음과 같다.
이후 controller에 각 함수들을 return 해준다.
이때 Nest.js는 일반적으로 Dependency injection으로 알려진 강력한 디자인 패틴을 기반으로 구축되었기 때문에,
constructor에 해당 Service를 Param에 넣어주기만 해도 잘 동작하는 것을 볼 수 있다.
추가적으로 REST API를 테스트 하기 위해서 이전에는 Chrome Extension에 Postman을 사용했었는데,
VScode에서 좋은 extension을 찾아 공유한다.
Thunder Client를 이용하면 vscode 내에서도 손쉽게 테스트가 가능하며,
기존에 raw json이 body로 넘어가지 않던 문제도 이를 통해 해결 하였다.
다음 포스팅은 DTO와 함께, Framework 구조를 더 파헤쳐 보도록 하겠다.
'서비스개발(Web, App) > Back-End' 카테고리의 다른 글
Nest JS 프레임워크 공부하기 - TypeORM, MariaDB(mysql) 연동 (0) | 2022.01.12 |
---|---|
Nest JS 프레임워크 공부하기 (Node.js) - 3 [DTO, DAO, Entity] (0) | 2022.01.04 |
Nest JS 프레임워크 공부하기 (Node.js) - 1 (0) | 2022.01.02 |
Nest JS 프레임워크 공부하기 (Node.js) - 0 (0) | 2022.01.02 |
Node.js ioredis(Redis) 외부 접속 (0) | 2021.08.19 |