[WIL] typescript 기반 Node.js 환경, Express, ORM - Prisma (24.02.13 - 16)

배고픈 배극곰·2024년 2월 14일
0

⬆️타입스크립트 기반으로 node 프로젝트 개발환경 구성


구성 순서

pre) 레포지토리 생성
git파일 생성 및 gitignore 설정

① 노드 프로젝트 생성 (package.json 생성)

npm init -y	//-y붙이면 기본값으로 모든질문에 자동으로 답함.

② typescript, @types/node 설치

npm i -D typescript @types/node	

-D 키워드는 --save-dev와 같은 의미로, 개발과정에서만 필요하고 프로덕션 환경에서는 불필요한 것을 설치할때 쓴다.!

③ typeconfig.json 설정

npx tsc --init

🍄 outDir 옵션 설정

교육과정내에서는 dist로 했음

④ typescript 파일 작성

=> 보통 src에 main.ts 만들어서 테스트했음.

⑤ typescript 컴파일

=> 설치했던 typescript 컴파일러를 사용하는 방법은,
=> tsc 명령어를 사용하면된다! tsc app.ts 명령어는 app.ts파일을 js파일로 컴파일 하게 되는데,

우리는 직접 package.json에서 "script" 섹션에 추가하여 빌드와 실행과정을 자동화 시키자!

먼저 concurrently 설치

npm i -D concurrently
"dev": "concurrently \"tsc --watch --project ./tsconfig.json\" \"node --watch ./dist/main.js\"",

윈도우는 생각보다 까다로운것같다.

TypeScript

typescript를 javascript로 변환해주는 것은? => typescript 트랜스파일러
typescript는 언어이기도 하고 트랜스파일러 이기도 함.

명령어들의 뜻을 파악하려고 노력하자

tsc 명령어 -> typescript 컴파일러를 사용하기위함
node 명령어 -> node가 뭔가 ⇒ 자바스크립트 런타임 ⇒ js파일을 실행하는 명령어인것이다.

개발서버실행?

먼저, 서버란 무엇인가?
쉽게 말해서 요청에 응답하는게 서버다.

즉, 개발서버실행은 다른말로 요청에 응답하는 파일을 개발환경에 적합한 방식으로 실행시키는 것이다.

Express

Express is a minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications

express.Router

⇒ 미니 app이라 생각하자

jsonp()

⇒ json 여러개를 쓸수있게해주는 문법이다.

json()

send()는 웬만하면 쓰지말고 json()쓰자.

Express routing

https://expressjs.com/en/4x/api.html#res.jsonSend a JSON response.
https://expressjs.com/en/4x/api.html#res.jsonpSend a JSON response with JSONP support.
https://expressjs.com/en/4x/api.html#res.redirectRedirect a request.
https://expressjs.com/en/4x/api.html#res.renderRender a view template.
https://expressjs.com/en/4x/api.html#res.sendSend a response of various types.
https://expressjs.com/en/4x/api.html#res.sendFileSend a file as an octet stream.

Postman

API 테스트 및 문서화 용도

ORM(Object-Relational Mapping)

객체지향 프로그래밍 언어를 사용해서 호환되지 않는 유형의 시스템 간 데이터를 변환하는 기법이다.
=> 즉, ORM을 사용하면, 객체 지향 언어로 작성된 코드를 통해 관계형 데이터베이스의 데이터를 관리할 수 있다.
=> 데이터 베이스의 테이블과 관계를 "객체"로 매핑

DB ===========⇒ ORM <============JS객체

Prisma

Node.js와 Typescript 애플리케이션을 위한 오픈소스 ORM이다.
Prisma Documentation | ORM, Accelerate, Pulse & More

세 부분으로 나뉜다.

① Prisma Client

자동으로 생성되는 타입 안전한 SQL 쿼리 작성없이 데이터베이스와 상호작용이 가능할 수 있게 해준다.

순서가
1. Prisma 스키마을 정의하고
2. 데이터베이스 스키마 마이그레이션 (모델 변경사항이 있고 업데이트해야하는 경우)
=> 최신상태로 유지하기 위해 진행한다고 한다.
3. npx prisma generate 하면 Prisma Client를 생성한다.
4. 생성된 prisma client를 가지고 이제 신나게 데이터베이스 작업을 수행하면 된다.

장점

  • 복잡한 SQL 쿼리 작성하지 않아도 데이터 베이스와의 상호작용을 간단하게 할 수 있따. (풀스택 개발시 용이하겠지?)
  • 직관적이다.
  • 정의된 모델에 따라 자동으로 타입이 지정되는데, 이로 인해 개발 과정에서 타입 체킹이 가능하며, 코드 자동완성 기능을 통해 개발이 편리하다.

② Prisma Migrate

=> 마이그레이션 도구.
git 처럼 Prisma 스키마 파일 변경사항을 기반으로 버전관리를 진행한다.

③ Prisma Studio

=> GUI 도구.
데이터를 직접 조회 및 수정이 가능하다.
=> 강사님이 활용하는거 보니까 개발 중에 즉시, 데이터베이스 변경사항을 확인하거나 테스트 하는 용도로 활용을 하는 것이 장점이다.

과제


개발 커뮤니티 서비스의 API 서버 만들기

당신은 개발 커뮤니티를 만드는 회사에의 취업에 성공하였습니다.

그러나 회사는 프론트엔드만 개발해 둔 상황이라 이제부터 새롭게 API 서버를 만들기 시작해야 합니다.

요구사항
1.기술스택

  • Node.js
  • Typescript
  • Express.js
  • Domain Driven Design → Context 단위로 도메인 구분
  • Prisma
  • PostgreSQL
  • JWT과 Bearer 토큰 조합의 인증
profile
마부작침 형설지공

0개의 댓글