-
Notifications
You must be signed in to change notification settings - Fork 6
백엔드 폴더 구조
최홍일 edited this page Dec 10, 2020
·
5 revisions
견고한 nodejs 구조를 참고하여 구조를 설계했습니다.
koa-framework, typescript를 사용하여 프로젝트를 설계하였습니다.
📂BE
└─📂src
├─index.ts # 시작 지점
├─📂controllers # request -> service, response <- service
├─📂interfaces # 타입스크립트에 필요한 인터페이스
├─📂loaders # 시작 프로세스 모듈
├─📂models # 데이터베이스 모델
│ ├─📂 ... # 모델별 폴더명
│ ├─index.ts # Function
│ └─schema.ts # mongoose Schema, Model
├─📂routes # URL에 따라 요청 처리 분기
│ └─📂api # /api URL모아두기
│ ├─index.ts
│ ├─ ...
│ └─📂acount-book # API중 account-book에 관한 요청들
├─📂services # request -> Model, response <-Model
│ ├─📂auth # 인증과 관련된 Service
│ └─ ...
└─📂utils # 기타 필요 함수
-
index.ts
- 진입점입니다. loader 작업이 끝나면, listen을 통해 서버를 시작합니다.
-
loaders
- loader는 시작 프로세스들을 모아놓은 모듈입니다.
-
mongoose loader
- DB를 연결하는 모듈입니다
-
koa
- koa 프레임워크의 로더입니다.
- 아래 항목에 해당하는 모듈을 등록합니다.
- middleware
- error handler
- router
-
Router
- URL 에 따라 요청 처리를 분기합니다.
- 요청에 맞는 Controller에 처리를 위임합니다.
-
Controller
- Request 정보를 Service로 보냅니다.
- Service에서 데이터를 받습니다
- 받은 데이터를 추상화한 response로 만들어 응답합니다.
-
Service
- Controller를 통해 받은 Request를 가공합니다.
- 가공한 데이터를 Model에 넘겨줍니다.
- Model에서 받은 데이터를 가공하여 Controller로 보내줍니다.
-
Model
- DB에 접근하여 필요한 작업을 수행합니다.
- Service를 통해 받은 데이터를 가지고 DB에 접근하여 필요한 작업을 합니다.
- 이 과정에서 발생하는 에러를 처리합니다.