* 프로그래머스, 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 5기 강의 수강 내용을 정리하는 포스팅.

* 원활한 내용 이해를 위해 수업에서 제시된 자료 이외에, 개인적으로 조사한 자료 등을 덧붙이고 있음.

1. next()

  • Express.js에서 다음 미들웨어 함수나 라우터 핸들러로 제어를 넘기는 역할을 수행하는 함수.

  • 요청이 들어오면, 제어권은 미들웨어로 이동되고, 할 일을 마치면 다음 순서로 제어권을 넘기는 역할을 수행한다.

const express = require('express');
const app = express();

// 첫 번째 미들웨어
app.use((req, res, next) => {
  console.log('첫 번째 미들웨어 실행');
  next(); // 다음 미들웨어로 이동
});

// 두 번째 미들웨어
app.use((req, res, next) => {
  console.log('두 번째 미들웨어 실행');
  next(); // 다음 미들웨어로 이동
});

// 라우터 핸들러
app.get('/', (req, res) => {
  res.send('라우터 핸들러 실행');
});

app.listen(3000, () => {
  console.log('서버 실행 중');
});
  • 위 예제에서, 백엔드에 요청이 들어올 경우..

  • 첫 번째 미들웨어 실행 -> 두 번째 미들웨어 실행이 모두 완료된 이후에 라우터 핸들러가 실행된다.

app.use((req, res, next) => {
  const error = new Error('문제가 발생했습니다!');
  next(error); // 에러 핸들러로 제어 이동
});

// 에러 핸들러 미들웨어
app.use((err, req, res, next) => {
  console.error(err.message);
  res.status(500).json({ message: '서버 오류가 발생했습니다.' });
});
  • 인자에 에러 객체를 전달하는 방식으로 에러를 처리하는 것 역시 가능.



next()의 동작 방식

  • 등록된 순서대로 미들웨어가 실행.

  • 각 미들웨어는 req, res, next를 매개변수로 받아 사용.

  • next()를 호출하지 않으면 요청은 중단되고, 응답이 반환되지 않을 수 있다.
    - next()를 누락하거나, res.send()로 응답을 보내놓고 next()를 호출할 경우 에러가 발생한다.



2. 인증과 인가



3. 쿠키/세션



4. JWT

profile
프론트엔드 개발자를 준비하고 있습니다.

0개의 댓글