[javascript] Express.js에서의 인터셉터 구현 방법

Express.js는 JavaScript로 구현된 웹 애플리케이션 프레임워크로, 미들웨어를 이용하여 HTTP 요청을 처리합니다. 이때, 인터셉터는 미들웨어를 이용하여 요청 전/후에 특정 작업을 수행하는 기능을 제공합니다.

미들웨어와 인터셉터의 차이점

미들웨어는 Express.js에서 주로 사용되는 개념으로, 요청과 응답을 처리하기 위한 함수입니다. 미들웨어는 체인 형태로 구성되며, 순차적으로 실행됩니다. 미들웨어는 요청과 응답 객체와 함께 호출되며, 특정 작업을 수행하는 로직을 담당합니다.

인터셉터는 미들웨어의 일부로 볼 수 있으며, 미들웨어 체인 내에서 특정 부분에 실행되는 로직입니다. 인터셉터는 요청 전/후에 수행되는 작업을 정의할 수 있으며, 주로 로그 기록, 인증 및 권한 부여 등의 작업에 활용됩니다.

Express.js에서의 인터셉터 구현하기

Express.js에서 인터셉터를 구현하기 위해서는 다음과 같은 방법을 사용할 수 있습니다:

  1. 미들웨어 함수로 인터셉터 구현하기

    const express = require('express');
       
    const app = express();
       
    // 인터셉터 구현
    app.use((req, res, next) => {
        // 요청 전 작업 수행
        console.log('Request intercepted.');
           
        // 다음 미들웨어로 이동
        next();
           
        // 응답 후 작업 수행
        console.log('Response intercepted.');
    });
       
    // 라우트 핸들러
    app.get('/', (req, res) => {
        // 요청에 대한 처리 작업 수행
        res.send('Hello, World!');
    });
       
    // 서버 시작
    app.listen(3000, () => {
        console.log('Server started on port 3000');
    });
    

    위 예제에서 / 경로로의 GET 요청이 발생하면, 인터셉터가 Request intercepted.Response intercepted.를 출력하고 해당 요청에 대한 처리를 수행합니다.

  2. 라우터 레벨에서 인터셉터 구현하기

    const express = require('express');
       
    const app = express();
       
    const router = express.Router();
       
    // 인터셉터 구현
    router.use((req, res, next) => {
        // 요청 전 작업 수행
        console.log('Request intercepted.');
           
        // 다음 미들웨어로 이동
        next();
           
        // 응답 후 작업 수행
        console.log('Response intercepted.');
    });
       
    // 라우트 핸들러
    router.get('/', (req, res) => {
        // 요청에 대한 처리 작업 수행
        res.send('Hello, World!');
    });
       
    // 라우터 등록
    app.use('/', router);
       
    // 서버 시작
    app.listen(3000, () => {
        console.log('Server started on port 3000');
    });
    

    위 예제에서 인터셉터는 router.use()를 통해 경로에 연결된 라우터 레벨에서 구현됩니다. 이를 통해 인터셉터는 특정 경로에 대해서만 동작하도록 설정할 수 있습니다.

마무리

Express.js에서 인터셉터를 구현하는 방법에 대해서 알아보았습니다. 인터셉터는 미들웨어의 일부로 사용되며, 요청 전/후에 특정 작업을 수행하는데 활용됩니다. 이를 통해 로그 기록, 인증 및 권한 부여 등의 작업을 간편하게 처리할 수 있습니다. Express.js의 강력한 미들웨어 기능을 통해 웹 애플리케이션을 더욱 유연하고 강력하게 구현할 수 있습니다.

참고 자료: