[TIL_2023.11.06] Node.js 미들웨어란?

김효진·2023년 11월 6일
0

강의를 듣는데 node.js 서버를 만들때 app.use(~~) 이런 형태의 코드를 미들웨어라고 부르는 것 같았다.

느낌은 알겠는데 쓰임을 정확하게 이해하지 못한 것 같아 검색을 해보았다.

일단 node express의 개념을 집고 넘어가야 되겠다.

express란?

  1. express는 node.js 위에서 동작하는 웹프레임워크라고 한다.
    참고로 프레임워크랑 라이브러리 개념이 헷갈려서 비교하는 내용을 알아보았다.

    1) 프레임워크란? 애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 커넥션 등의 기능들을 위해 뼈대(구조)를 제공한다. 예를 들어 Java의 Spring이나 Python개발에서 쓰이는 Django, node.js 의 express 등이다.

    2) 라이브러리란? 라이브러리는 개발에 필요한 것들을 미리 구현해놓은 도구라고 할 수 있다. 재사용이 가능한 기능을 미리 구현해놓고 필요한 곳에서 호출하여 사용 가능하도록 만들어진 집합이다. 자바스크립트 관련된 라이브러리를 예로들면 react, jquery, axios 등이 해당된다.

    이렇게 예시로 드니 조금더 이해가 됬다. 큰 차이점이라고 하면 '제어흐름'이 어디에 있는가? 인데 프레임워크의 경우 코드가 프레임워크에서 짜놓은 틀 안에서 수동적으로 동작하기 때문에 프레임워크에 제어권이 있고 라이브러리의 경우 개발자가 라이브러리를 가져다 필요에 맞게 수정하며 사용하므로 제어권이 개발자에게 있다.

  2. node.js 개발시 개발을 쉽게 할 수 있게 도와준다. (미들웨어 구조로 인함) 하여 개발자가 필요한 것만 선택해 express와 결합하여 사용 가능하다.

node.js 에서의 미들웨어란?

  1. 클라이언트로부터 요청이 오면 그에 대한 응답을 보내기 위해 중간에 목적에 맞는 처리를 위해 거쳐가는 함수들

  2. 요청 - 응답 사이클 도중 그 다음의 미들웨어 함수에 대한 엑세스 권한을 갖는 함수이다.

  3. 미들웨어 함수는 주로 아래와 같은 작업을 수행한다.

    1) 요청 전처리: 요청 객체의 데이터를 검사하고 필요한 작업을 수행하여 요청을 전처리한다.
    2) 응답 전송: 응답 객체를 사용하여 클라이언트에게 데이터를 전송하고, HTTP 응답 코드와 헤더를 설정한다.
    3) 다음 미들웨어로 제어 전달: next 함수를 호출하여 제어를 다음 미들웨어로 전달한다 (next 함수 호출 필수!)

    아래는 chatGPT가 알려준 미들웨어 예시 코드

    const express = require('express');
    const app = express();
    
    // 미들웨어 함수
    function customMiddleware(req, res, next) {
      console.log('This is a custom middleware.');
      next(); // 다음 미들웨어로 제어 전달
    }
    
    // 미들웨어 함수를 사용하는 라우트 핸들러
    app.use(customMiddleware);
    
    app.get('/', (req, res) => {
      res.send('Hello, World!');
    });
    
    app.listen(3000, () => {
      console.log('Server is running on port 3000');
    });
    

    위 코드를 보면 customMiddleware 함수는 미들웨어로 사용되고 있고, app.use() 메서드를 통해 모든 요청에 대해 이 미들웨어 함수가 실행되게 설정되었다. 요청이 오면 이 함수를 실행한 후 next() 호출을 통해 다음 미들웨어나 라우트핸들러로 전달한다.

profile
더 많은 사람들이 더 좋은 정보와 서비스를 누릴 수 있게!!

0개의 댓글