[Express] 미들웨어 작성

2023. 7. 5. 23:02공부 중/Node.js

1. 미들웨어 작성

 

가. 이론

 

 

Express 앱에서 사용하기 위한 미들웨어 작성

Express 앱에서 사용하기 위한 미들웨어 작성 개요 미들웨어 함수는 요청 오브젝트(req), 응답 오브젝트 (res), 그리고 애플리케이션의 요청-응답 주기 중 그 다음의 미들웨어 함수 대한 액세스 권한

expressjs.com

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

 

 

 

현재의 미들웨어 함수가 요청-응답 주기를 종료하지 않는 경우에는 next()를 호출하여 그 다음 미들웨어 함수에 제어를 전달해야 합니다.

 

그렇지 않으면 해당 요청은 정지된 채로 방치됩니다.

 

나. 예시

 

서드파티 미드웨어를 이용해서 필요한 기능을 가져올 수도 있지만 원한다면 직접 만들 수 있다.

...
app.use(bodyParser.urlencoded({extended: false}));
app.use(compression());
...

 

위와 같이 서드파티 미들웨어처럼 작성하면 된다.

 

아래에는 공식 홈페이지에서 제공하는 예시다.

 

“myLogger”라는 이름의 미들웨어 함수에 대한 간단한 예다.

 

이 함수는 앱에 대한 요청이 해당 함수를 거쳐 전달될 때 “LOGGED”를 출력한다.

 

이 미들웨어 함수는 myLogger라는 변수에 저장되어있다.

 

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

만약 사용자의 요청마다 ‘LOGGED’를 출력하고 싶다면 다음과 같이 배치하면 된다.

 

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);
  • next() : 스택 내의 그 다음 미들웨어 함수에 요청을 전달한다. 스크립트에 미들웨어 함수가 위에서부터 아래까지 쌓여있는 모습을 보고서 스택이라고 하는 것 같다.

모든 요청이 아니라 특정 라우트에만 실행하고자 변경할 수 있다.

 

만약 get 요청에만 실행하고 싶다면…

 

...
app.get('*', myLogger);
...

 


'공부 중 > Node.js' 카테고리의 다른 글

[Express] 정적인 파일 서비스  (0) 2023.07.05
[Express] 미들웨어, 라우터 실행순서  (0) 2023.07.05
[Express] 미들웨어 사용  (0) 2023.07.05
[Express] CRUD 수정  (0) 2023.07.04
[Express] Routing  (0) 2023.07.04