본문 바로가기
Web/Node.js

Node.js / Express.js에서 Middleware란?

by returnpie 2020. 9. 1.

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