반응형
parameter가 있는 middleware
매개변수를 사용할 수 있는 미들웨어를 만들어보자.
router와 middleware의 기본 형태
router.get('/example', function (req, res, next) {
...
});
NodeJS에서는 라우터를 구성할 때 위 소스코드처럼 경로를 지정하고 해당 경로에서 트리거 될 미들웨어를 작성한다.
// 미들웨어의 기본 형태
function (req, res, next) {
}
// 파라미터를 스킵한 미들웨어의 형태
function () {
}
미들웨어는 항상 기본 파라미터로 request, response, next 개체들을 받거나 스킵할 수 있는데, 개발자가 원하는 파라미터를 따로 선언할 수 없다는 문제점이 있다.
parameterized middleware
미들웨어는 request, response, next를 필요로 하는 함수 타입이므로
function customMiddleWare(parameter) {
return function (req, res, next) {
...
}
}
매개변수를 사용할 수 있는 미들웨어를 만들 때는 위 소스코드처럼 미들웨어를 리턴하는 함수를 만들면 된다.
예시
그렇다면 라우터를 호출한 클라이언트의 앱 버전이 API를 이용가능한 최소버전 이상인지 체크하는 미들웨어를 만들어보자.
function minApp(minVersion) {
return function (req, res, next) {
const clientVersion = req.headers['appVersion'];
// 호출 가능한 최소 버전보다 앱버전이 낮은 경우
if (clientVersion < minVersion) {
next(new Error("Invalid app version!"));
return;
}
next();
}
}
위 처럼 함수를 만들고
// minApp(1)
router.get('/example', minApp(1), function (req, res, next) {
...
});
이렇게 적용시키면 된다. minApp(1)를 사용한 것 처럼 미들웨어에 파라미터를 정의할 수 있게 된 것이다.
관련 문서
반응형
'Programming > Node.js' 카테고리의 다른 글
[Node.js] Event Loop와 non-blocking I/O 실행 과정 (0) | 2024.07.04 |
---|---|
[Node.js] PayloadTooLargeError: request entity too large (1) | 2019.08.11 |
[Node.js] .env 환경변수 (1) | 2019.05.24 |
댓글