TypeScript + express 사용해보자

예니·2022년 10월 5일
0

NestJS

목록 보기
1/1
post-thumbnail

인프런 탄탄한 백엔드 NestJS, 기초부터 심화까지 강의의 express 핵심 원리 챕터를 들으며
기억할 부분을 기록한 글입니다.

typescript 컴파일

tsconfig.json

https://www.staging-typescript.org/tsconfig

tsconfig.json에 설정된 대로 컴파일 됨
컴파일 결과물은 outDir 경로에 js파일로 생성됨

package.json


tsc : 컴파일러
tsc-watch : 계속 파일을 지켜봄 (파일 변경)

"scripts": {
    "build": "tsc",
    "start:dev": "tsc-watch --onSuccess \"node dist/app.js\"",
    "prestart": "npm run build",
    "start": "node dist/app.js"
  }
  • npm run start:dev 입력하면 tsc-watch --onSuccess \"node dist/app.js\"가 실행됨
    tsc-watch로 파일을 지켜보다가 성공했다면, node dist/app.js 실행
    그래서 파일 변경되면 tsc-watch가 감지해서 다시 컴파일함
  • npm run start 입력하면 prestart가 먼저 실행되고, build에서 tsc로 컴파일함

express 미들웨어

미들웨어란

  • 요청과 응답 사이에 중간(미들)에 목적에 맞게 처리를 하는 함수들 (ex. 로깅)

사용법

app.use((req, res, next) => {
    console.log(req.rawHeaders[1]);
    next();
});
  • 적용하려는 라우터보다 위에 위치해야함
  • 라우터 전체에 적용하고 싶을 때는 app.use 사용
app.get('/test', (req, res, next) => {
    console.log(req.rawHeaders[1]);
    next();
});
  • GET /test 메서드를 처리하는 라우터에만 적용하고 싶으면 app.use가 아니라 위와 같이 쓰면 됨
  • 미들웨어에서 처리할 거 처리하고, next로 라우터 수행

Request json body를 읽을 수 있게 하는 미들웨어

app.use(express.json());
  • 이거 없으면 못읽어서 undefined

자바스크립트 구조 분해 할당

  • 참고 : https://ko.javascript.info/destructuring-assignment
  • PATCH에서 유용하게 사용할 수 있음
    Cat이라는 객체가 있고, request로 name이 들어왔을 때, name값만 바꿔주고 싶다면
    아래와 같이 쓸 수 있음
    기존 cat을 구조 분해 할당, body도 구조 분해 할당하여 중복된 키는 body의 값으로 바꿔줌
// cat은 기존 cat 객체로 이미 선언되어있음
const body = req.body;
cat = {...cat, ...body};

1개의 댓글

comment-user-thumbnail
2022년 10월 5일

소통해요

답글 달기