💗 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를 출력해볼수있다. 미들웨어 변수가 공유가 되는 것 같다.