NestJS에 대하여

Devcamp 1일차 NestJS Nest는 테스트가 수월하고 확장성이 좋으며 유지보수가 편리한 Node.js 프레임워크 중 하나이다. Typescript Nest는 Typescript를 지원하는 것이 가장 큰 특징이다. 따라서 Interface를 사용할 수 있으며 Static/strong typing을 지원하기 때문에 type에 관해서, 혹은 property나 이름 오류도 코드 작성 단계에서 감지된다. 서버를 매번 실행하는 번거로움 없이 오타나 Type 설정, 디버깅을 할 수 있다는 것은 개발에 들어가는 시간과 노력을 줄여주는 큰 장점이다. 성질 객체지향 프로그래밍, 자료 처리를 수학적 함수의 계산으로 취급하는 FP(Functional Programming), 그리고 비동기적 데이터 흐름의 요소를 갖추고 있다. 기본적으로 Express hTTP 프레임워크를 사용하지만, Fastify를 포함하여 다양한 Node HTTP 프레임워크도 사용할 수 있고, Express에서 지원되는 것들은 Nest에서도 사용할 수 있어서 사용이 편리하다. ...

2023년 10월 11일 · 8 분 · 배준수

Nest 아키텍처 : 모듈

종속성 주입 이해를 위한 소규모 프로젝트 소규모 프로젝트 개요 3개의 계층으로 이루어진 모듈을 만들 것이다. 최상층에는 Computer Module이 있고 내부에는 Computer Controller가 run이라는 메서드를 가진다. 이 내부에는 CPU, Disk Module이 있는데 각각 CPU Service, Disk Service를 가지고 있으며 이는 또 compute와 getData라는 메서드를 가진다. 최하층에는 Power Module이 있으며 Power Service를 가진다. 메서드는 supplyPower()이다. 생성은 당연히 최하층 Power Module이 전원을 제공하면 CPU와 Disk가 작동하고 Computer가 작동하는 형태이다. 기존과는 다른 새로운 디렉토리에서 Nest 프로젝트를 시작하자. ...

2023년 10월 7일 · 6 분 · 배준수

NestJS 프로젝트 : 기획 및 구성

중고차 판매 프로그램 중고차 판매 API 유저가 email과 Password로 가입 유저가 브랜드, 모델, 연식, 주행거리를 기반으로 예상 가격을 제공받음 유저는 중고차를 판매하고 실제 가격 기입 관리자가 기입된 가격을 검토 후 승인 API 디자인 Method and Route Body or Query String Description POST /auth/signup Body - { email, password } 새로운 유저의 회원 가입 로그인 POST /auth/signin Body - { email, password } 기존 유저의 로그인 GET /reports QS - make, model, year, mileage, longitude, latitude 자동차 가격 추정치 제공 POST /reports Body - { make, model, year, mileage, longitute, latitude, price } 판매 가격 기입 PATCH /reports Body - { approved } 유저가 제출한 가격 심사(가짜 데이터 차단) Module 디자인 Module Controllers Services Repositories Users Module Users Controller Users Service Users Repository Reports Module Reports Controller Reports Controller Reports Repository 처음부터 완벽하게 디자인 할 순 없다. 이를 기반으로 진행하면서 추가하면 된다. ...

2023년 10월 7일 · 1 분 · 배준수

Nest CLI로 프로젝트 생성하기

App setup 이번엔 이전과 다르게 Nest CLI를 이용해 프로젝트를 시작해보겠다. 새로운 디렉토리에서 시작하자. 새 폴더를 만들고 터미널에서 이동한다. npm install -g @nestjs/cli 를 입력하자. 오류뜨면 맨앞에 sudo를 추가한다. 설치가 끝나면 nest new {프로젝트이름}을 입력하고 npm을 선택한다. messages라는 이름으로 짓겟다. 끝나고 나면 우리가 일일이 만들었던 저번보다 훨씬 많은 파일이 자동적으로 생성된 것을 볼 수 있다! 계획 이번에 만들 앱(모바일 X)은 일반 JSON 파일에 저장된 메시지를 검색하고 저장하는 것. 3개의 route가 예상된다. 각 route가 pipe, guard, controller, service, repository 중 무엇이 필요한지 생각해보자. ...

2023년 10월 5일 · 3 분 · 배준수

NestJS 기초

scratch에서 시작한다. Nest 기초 시작 및 설치하기 npm init -y 로 package.json 생성한다. 그 후 종속성 5개를 설치한다. "@nestjs/common": "^7.6.17" : Nest에서 함수, 클래스 등 대다수를 가져온다. "@nestjs/core": "^7.6.17" "@nestjs/platform-express": "^7.6.17" : HTTP 요청을 다루기 위해 Nest가 ExpressJS 사용하도록 해준다. "reflect-metadata": "^0.1.13" : decorator "typescript": "^4.3.2" : 사용할 언어 TS(Typescript) 컴파일러 세팅 루트 디렉토리에 다음과 같이 tsconfig.json 파일을 만든다. 1 2 3 4 5 6 7 8 { "compilerOptions": { "module": "commonjs", "target": "es2017", "experimentalDecorators": true, "emitDecoratorMetadata": true } } HTTP 요청과 응답 사이에 서버에서 발생하는 일 요청 (in Nest) ...

2023년 10월 5일 · 4 분 · 배준수