검색
검색
공개 노트 검색
회원가입로그인
Node.js Express로 쉽게 서버 구축하기

미들웨어 탐구하기

Node.js Express로 쉽게 서버 구축하기

Exploring Middleware

익스프레스(Express) 프레임워크를 활용하면서 매개체 역할을 하는 다양한 기능을 이해하는 것이 중요합니다. 이런 기능은 "미들웨어"라고 불리며, 다음과 같이 정의할 수 있습니다: Express 미들웨어는 요청(Request)과 응답(Response) 사이에서 작동하여 데이터를 처리하고 흐름을 제어하는 역할을 하는 함수들입니다.

미들웨어의 역할

  1. 요청이나 응답의 변경: 요청 객체(req)나 응답 객체(res) 속성을 추가하거나 수정할 수 있습니다.

  2. 요청 통과 여부 결정: 현재 요청을 특정 경로로 라우팅하거나, 응답을 종료하여 네트워크로 되돌려 보낼 수 있습니다.

  3. 요청 및 응답 로깅: 요청/응답의 과정 또는 정보를 기록하여 서버의 디버깅 및 로깅을 돕습니다.

Express에서 기본 제공하는 미들웨어

Express에는 몇 가지 내장 미들웨어가 포함되어 있습니다. 예를 들어, 정적 파일 서비스 제공을 위한 express.static 또는 요청 본문을 분석하는 express.jsonexpress.urlencoded 미들웨어 등이 있습니다.

const express = require('express');
const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

사용자 정의 미들웨어 생성하기

사용자 정의 미들웨어는 req, res, next 의 세 가지 인수를 사용하는 함수 형태로 정의됩니다. 이 함수는 이후의 미들웨어 체인으로 제어를 전달하기 위해 next()를 호출할 수 있습니다.

app.use((req, res, next) => {
  console.log('클라이언트 IP: ', req.ip);
  next(); // 다음 미들웨어로 전달
});

비동기 미들웨어

비동기 작업 중단 시 서버를 중단하는 것이 아닌 async/await를 사용하여 비동기 로직을 처리할 수 있습니다. try.catch 구조를 사용하여 오류를 적절히 처리하세요.

app.use(async (req, res, next) => {
  try {
    const result = await someAsyncTask();
    console.log(result);
    next();
  } catch (error) {
    next(error); // 오류 핸들링 미들웨어로 전달
  }
});

결론

미들웨어는 Express 애플리케이션에서 필수 불가결한 요소로, 요청/응답 흐름에 영향을 미칠 수 있는 강력한 도구입니다. 많은 경우 적절하게 구성된 미들웨어 체인을 통해 코드를 분리하고 재사용하며 유지보수를 용이하게 할 수 있습니다. 다음 장에서는 미들웨어와 다른 역할이 구분된 애플리케이션 설계 패턴에 대해 살펴보겠습니다.

참고 자료


공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기