기록
article thumbnail
Published 2023. 6. 1. 16:50
Express 미들웨어 응용예제 Nodejs
728x90

💗 Express

Express는 자체적인 최소한의 기능을 갖춘 라우팅 및 미들웨어 웹 프레임워크이며, Express 애플리케이션은 기본적으로 일련의 미들웨어 함수 호출입니다.

 

💜 미들웨어

미들웨어 함수는 요청 오브젝트(req), 응답 오브젝트(res), 그리고 애플리케이션의 요청-응답 주기 중 그 다음의 미들웨어 함수에 대한 액세스 권한을 갖는 함수입니다. 그 다음의 미들웨어 함수는 일반적으로 next 라는 이름의 변수로 표시됩니다.

 

💚 미들웨어 함수 태스크

   1️⃣ 모든 코드를 실행

   2️⃣ 요청 및 응답 오브젝트에 대한 변경을 실행

   3️⃣ 요청-응답 주기를 종료

   4️⃣ 스택 내의 그 다음 미들웨어 함수를 호출 

현재의 미들웨어 함수가 요청-응답 주기를 종료하지 않는 경우에는 next()를 호출하여 그 다음 미들웨어 함수에 제어를 전달해야 합니다. 그렇지 않으면 해당 요청은 정지된 채로 방치됩니다.

 

 

내용출처 : https://expressjs.com/ko/guide/using-middleware.html

 

Express 미들웨어 사용

미들웨어 사용 Express는 자체적인 최소한의 기능을 갖춘 라우팅 및 미들웨어 웹 프레임워크이며, Express 애플리케이션은 기본적으로 일련의 미들웨어 함수 호출입니다. 미들웨어 함수는 요청 오

expressjs.com

 

 

 

 

💙 개인 응용 예제

 

myrouter.js 

router.get('/test/:idx', test, (req, res) => {
    console.log(`text : `,text);
    res.json(req.idx);
})

 

 

middlewares.js

const RateLimit = require('express-rate-limit');

exports.test = (req, res, next) => {
    var idx = req.params.idx
    if(idx < 10) {
        req.idx = `${idx}는 10보다 작은 수 입니다.`;
        text = `ㅇㅅㅇ`
    } else if(idx == 10) {
        req.idx = `${idx}는 10 입니다.`;
        text = `ㅠㅅㅠ`

    } else {
        req.idx = `${idx}는 10보다 큰 수 입니다.`;
        text = `ㅋㅋㅋ`
    }
    return next();
}

 

💦 next()가 있으면 이 함수 종료후에도 또 다른 미들웨어 함수를 쓸 수 있음.

 

실행결과

 

 

순서대로 ㅠㅅㅠ / ㅋㅋㅋ / ㅇㅅㅇ 이 console로 출력된 모습

 

💌 메모

코드에서 보면 알 수 있지만, 

middleware에서 그냥 단순히 text = `문구` 를 넣은 부분이 있는데.

라우터에서 text를 출력해볼수있다. 미들웨어 변수가 공유가 되는 것 같다.

profile

기록

@데굴데구르르 림

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

2025, 이제 사내 컨플루언스에 모두 작성하게 되어서 업데이트가 잘 없을 것 같습니다..