Node.js 를 배워보자/4. Express 프레임워크

Express 프레임워크 미들웨어 (Middleware)

_Blue_Sky_ 2024. 9. 30. 22:01
728x90
728x90

Express 프레임워크에서 미들웨어: 심층 분석

Express 프레임워크에서 미들웨어란 무엇일까요?

Express는 Node.js에서 가장 인기 있는 웹 애플리케이션 프레임워크 중 하나입니다. 이 프레임워크를 사용하면 빠르고 효율적인 웹 서버를 쉽게 구축할 수 있는데요, 그 중심에는 바로 '미들웨어'라는 개념이 자리하고 있습니다.

미들웨어는 요청과 응답 사이에 위치하여 다양한 작업을 수행하는 함수입니다. 즉, 클라이언트가 요청을 보내면 서버는 이 요청을 처리하기 전에 미리 정의된 미들웨어 함수들을 순차적으로 실행합니다. 각 미들웨어 함수는 요청 객체, 응답 객체, 그리고 다음 미들웨어 함수를 인자로 받아 처리를 진행합니다.

미들웨어의 역할

미들웨어는 Express 애플리케이션에서 다양한 역할을 수행합니다.

  • 요청 로그 기록: 각 요청에 대한 정보를 로그 파일에 기록하여 문제 발생 시 빠른 진단을 가능하게 합니다.
  • 인증 및 권한 부여: 사용자의 인증 정보를 확인하고, 요청한 자원에 대한 접근 권한을 부여합니다.
  • 에러 처리: 예외 발생 시 적절한 에러 메시지를 반환하거나, 로그를 기록하고, 시스템을 안정적으로 유지합니다.
  • 데이터 파싱: 클라이언트에서 보낸 데이터를 파싱하여 서버에서 사용할 수 있는 형태로 변환합니다.
  • 정적 파일 제공: HTML, CSS, JavaScript 등 정적 파일을 클라이언트에 제공합니다.
  • 쿠키 처리: 쿠키를 설정하고 읽어 사용자 정보를 관리합니다.
  • 세션 관리: 사용자 세션을 관리하여 사용자 상태를 유지합니다.

미들웨어 작성하기

미들웨어 함수는 다음과 같은 형식으로 작성됩니다.

function middleware(req, res, next) {
  // 요청 처리 로직
  next(); // 다음 미들웨어로 이동
}
 
  • req: 요청 객체. 클라이언트에서 보낸 정보를 담고 있습니다.
  • res: 응답 객체. 클라이언트에게 보낼 응답을 생성합니다.
  • next: 다음 미들웨어 함수를 호출하는 함수입니다.
728x90


미들웨어 사용하기

Express 애플리케이션에서 미들웨어를 사용하는 방법은 간단합니다. app.use() 메소드를 사용하여 미들웨어 함수를 등록하면 됩니다.

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

// 로그 기록 미들웨어
app.use((req, res, next) => {
  console.log(`${req.method} ${req.url}`);
  next();
});

// 정적 파일 제공 미들웨어
app.use(express.static('public'));

// 라우팅
app.get('/', (req, res) => {
  res.send('Hello, world!');
});

app.listen(3000, () => {
  console.log('Server listening on port 3000');
});
 

위 예시에서는 요청이 들어올 때마다 로그를 기록하고, public 디렉토리에 있는 정적 파일을 제공하는 미들웨어를 사용하고 있습니다.

미들웨어의 장점

  • 모듈화: 각 기능을 별도의 미들웨어로 구현하여 코드를 모듈화하고 재사용성을 높일 수 있습니다.
  • 유연성: 다양한 미들웨어를 조합하여 복잡한 애플리케이션을 구축할 수 있습니다.
  • 확장성: 새로운 기능을 추가할 때 기존 코드를 수정하지 않고 미들웨어를 추가하기만 하면 됩니다.

미들웨어의 종류

  • 내장 미들웨어: Express에서 기본으로 제공되는 미들웨어로, express.json(), express.urlencoded(), express.static() 등이 있습니다.
  • 외부 미들웨어: 다른 개발자가 만든 미들웨어로, npm을 통해 설치하여 사용할 수 있습니다. 예를 들어, 로그 기록을 위한 morgan, 데이터베이스 연결을 위한 mongoose 등이 있습니다.
  • 커스텀 미들웨어: 개발자가 직접 작성한 미들웨어로, 특정 기능을 구현하기 위해 사용됩니다.

결론

미들웨어는 Express 애플리케이션 개발에 필수적인 요소입니다. 미들웨어를 효과적으로 활용하면 코드를 더욱 모듈화하고 재사용성을 높일 수 있으며, 복잡한 애플리케이션도 쉽게 구축할 수 있습니다.

 

728x90
728x90