체인의정석

Nest.js) 구조와 작업순서 총정리 본문

개발/backend

Nest.js) 구조와 작업순서 총정리

체인의정석 2021. 10. 19. 17:26
728x90
반응형

 

오랜 방황 끝에 결국 다음과 같이 구조를 짤 수 있었다.

├── addresses
│   ├── addresses.module.ts
│   ├── controller
│   │   ├── addresses.controller.spec.ts
│   │   └── addresses.controller.ts
│   ├── dto
│   │   ├── get-contract-command.dto.ts
│   │   └── get-contract-response.dto.ts
│   ├── entities
│   │   └── addresses.entity.ts
│   └── service
│       ├── addresses.service.spec.ts
│       └── addresses.service.ts
├── app.module.ts
├── config
│   └── configuration.ts
├── main.ts
├── routes.ts
└── transactions
    ├── controller
    │   ├── transactions.controller.spec.ts
    │   └── transactions.controller.ts
    ├── dto
    │   ├── get-block-timestamp-command.dto.ts
    │   ├── get-block-timestamp-response.dto.ts
    │   ├── get-realted-transactions-command.dto.ts
    │   ├── get-related-transactions-response.dto.ts
    │   ├── get-value-command.dto.ts
    │   └── get-value-response.dto.ts
    ├── entities
    │   └── transactions.entity.ts
    ├── service
    │   ├── transactions.service.spec.ts
    │   └── transactions.service.ts
    └── transactions.module.ts

아직 수정이 많이 필요하겠지만 이해한 구조는 다음과 같다.

 

nest.js 는 typeORM을 쓰는 것이 일반적이며, 타입스크립트를 쓰기 때문에 데이터의 테이블, 입력값, 출력값 등등을 모두 타입으로 지정해 주어서 안정성이 높게 만든 구조를 띈다.

 

1. DB, api를 설계한다.

2. 기존의 DB를 연결하거나 처음부터 db를 typeORM으로 만들면서 프로젝트의 틀을잡는다.

3. app.module.ts 에서 ConfigModule.forRoot 와 TypeOrmModule.forRoot 등을 설정해준다. 이를 통해서 데이터베이스와의 연결해주며, 이때 환경변수 설정도 해주면 더 좋다.

4. main.ts 에서 swagger등의 설정을 해준다.

5. controller에서는 라우팅을 관리한다 설계를 보고 라우팅을 해준다.

6. entities에서는 DB를 보고 그 구조를 그대로 넣어준다.

7. 입력값과 출력값을 객체의 형태로 dto에 넣어준다.

8. 위에서 만든 값들을 가지고 service에서 REST API로 CRUD를 해준다.

9. 해당 기능별로 파일을 만들고 modules.ts를 설정해준다.

10. 필요한 미들웨어는 routes.ts에서 관리한다.

 

그 외, test 를 jest로 진행하는 것은 이전에 한번 해보았기 때문에 상대적으로 빨리 할 수 있을거라고 기대한다.

테스트는 또한 swagger를 써서 편하게 할 수도 있다.

 

728x90
반응형
Comments