Node.js / Express.js에서 Middleware란?
Middleware는 req와 res사이에 있는 어떤 기능입니다.
Express.js에서는 use()라는 함수로 Middleware를 추가합니다.
const express = require('express');
const app = express();
app.use((req, res, next) => {
console.log("I'm Middleware"); //Middleware는 req, res, next를 args로 받는 함수.
})
app.listen(3000);
args의 req, res는 request, response이고 next는 다음 Middleware로 넘어가는 함수입니다.
#1)
const express = require('express');
const app = express();
app.use((req, res, next) => {
console.log("I'm First Middleware");
})
app.use((req, res, next) => {
console.log("I'm Second Middleware");
})
app.listen(3000);
위 코드는 I'm First Middleware만 출력됩니다.
#2)
const express = require('express');
const app = express();
app.use((req, res, next) => {
console.log("I'm First Middleware");
next();
})
app.use((req, res, next) => {
console.log("I'm Second Middleware");
})
app.listen(3000);
아래 코드는 I'm First Middleware, I'm Second Middleware 둘 다 출력됩니다.
req.method를 제한할 수도 있습니다.
app.use((req, res, next) => {
if (req.method === "POST") {
console.log("req.method는 'POST' 입니다.");
}
});
args에 특정 URL을 주어, Middleware를 실행하는 req를 제한할 수 있습니다.
req.url이 지정한 URL로 시작한다면 Middleware가 동작합니다. ( req.url.startWith('/') )
app.use('/', (req, res, next) => {
console.log("req.url은 '/' 입니다.");
});
동시에 사용하면 이런 형태입니다.
app.use('/', (req, res, next) => {
if (req.method === "POST") {
console.log("req.method는 'POST' 입니다.");
}
});
get() 또는 post()함수를 이용하면 더 편리합니다.
use()와 차이점은 URL이 정확하게 일치할 때만 Middleware가 동작합니다. ( req.url === '/' )
get()
app.get('/', (req, res, next) => {
console.log("req.url은 '/', req.method는 'GET' 입니다.");
});
post()
app.post('/', (req, res, next) => {
console.log("req.url은 '/', req.method는 'POST' 입니다.");
});
'Web > Node.js' 카테고리의 다른 글
Node.js / Express.js 소개 (0) | 2020.09.01 |
---|---|
Node.js의 Core Module로 Http Server 만들기 (0) | 2020.08.27 |
Node.js 소개 및 설치 방법! (0) | 2020.08.24 |