[Express] 미들웨어 작성
2023. 7. 5. 23:02ㆍ공부 중/Node.js
1. 미들웨어 작성
가. 이론
미들웨어 함수는 요청 오브젝트(
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 |