Express 사용기[4] - 미들웨어 작성

김진성·2021년 10월 17일
1

Node.js

목록 보기
4/5

미들웨어란?

미들웨어는 운영 체제와 해당 운영 체제에서 실행되는 응용 프로그램 사이에 존재하는 소프트웨어입니다. 기본적으로 숨겨진 변환 계층으로 기능하는 미들웨어는 분산 응용 프로그램의 통신 및 데이터 관리를 가능하게 합니다. 데이터와 데이터베이스가 "파이프" 사이를 쉽게 통과할 수 있도록 두 가지 응용 프로그램을 함께 연결하기 때문에 배관이라고도 합니다. 미들웨어를 사용하면 사용자가 웹 브라우저에서 양식을 제출하거나 웹 서버가 사용자의 프로필을 기반으로 동적 웹 페이지를 반환하도록 요청할 수 있습니다.

Azure에서 설명하는 미들웨어의 개념이 길지만 간단히 설명하면 web 서비스에서 구성되는 다양한 서버를 연결해주는 것을 미들웨어라고 보면 된다. Express에서 사용되는 미들웨어 함수는 req, res로 구성된 요청 및 응답 오브젝트라고 볼 수 있다. 이 미들웨어를 통해서 우리는 Express 내에서 다양한 태스크를 수행할 수 있다.

  • 모든 코드를 실행
  • req, res 변경 실행
  • 요청-응답 주기 종료
  • 스택 내의 다음 미들웨어 호출

미들웨어 사용하기

단순 미들웨어 함수 사용하기

var express = require('express');
var app = express();

var myLogger = function (req, res, next) {
	console.log('LOGGED');
    next();
};

app.use(myLogger);

app.get('/', function (req, res) {
	res.send('Hello World!');
});

app.listen(3000);

여기서 미들웨어 함수란 myLogger 함수로 이 함수를 사용하려면 app.use(myLogger) 로 사용하면 된다. 여기서 앱이 요청을 받을 때마다 앱은 "LOGGED"라는 메시지를 호출한다.

미들웨어 함수를 통한 req 에 특성 추가하기

var express = require('express');
var app = express();

var requestTime = function (req, res, next) {
	req.requestTime = Date.now();
    next();
}

app.use(requestTime);

app.get('/', function(req, res) {
	var responseText = 'Hello World!';
    responseText += 'Requested at: ' + req.requestTime + '';
    res.send(responseText);
});

app.listen(3000);

requestTime에서 사용되는 req와 app.get에서 사용되는 req는 다르다. 초반에 요청이 들어왔을 때에는 사용자가 요청한 정보만 있었겠지만 requestTime을 거치면서 현재 시간 정보가 추가 되었고 그 결과 app.get에서 받은 req에는 Date.now() 정보가 들어있는 requestTime이 존재하기 때문이다.

profile
https://medium.com/@jinsung1048 미디엄으로 이전하였습니다.

0개의 댓글