익스프레스 미들웨어 사용
지금 http://jauyeung.net/subscribe/에서 내 이메일 목록을 구독하십시오.
미들웨어 함수는 요청 및 응답 객체에 접근할 수 있는 함수이며, 다음 미들웨어를 호출하기 위한 next 함수입니다.
이 기사에서는 Express 미들웨어의 기능과 사용 방법을 살펴보겠습니다.
미들웨어의 특징
미들웨어 함수는 모든 코드를 실행하고, 요청 및 응답 객체를 변경하고, 요청-응답 주기를 종료하고, 스택의 다음 미들웨어를 호출할 수 있습니다.
애플리케이션 수준 미들웨어
모든 경로가 호출될 때 사용되는 미들웨어를 app.use
메서드에 콜백으로 전달하여 실행할 수 있습니다.
하나의 요청 메서드의 요청이 호출될 때만 미들웨어 함수가 호출되도록 하려면 이를 app.METHOD
메서드에 콜백으로 전달할 수 있습니다. 여기서 METHOD
는 get
, post
, put
, delete
등입니다.
예를 들어 미들웨어 함수를 작성하고 app.use
에 전달하여 다음과 같이 요청의 요청 방법을 기록할 수 있습니다.
const express = require('express')
const app = express()
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.use((req, res, next) => {
console.log(req.method);
next();
});
app.get('/', (req, res) => {
res.json();
})
app.listen(3000, () => console.log('server started'));
그런 다음 GET
에 GET 요청을 할 때 /
기록되어야 합니다.
다음과 같이 작성하여 미들웨어 기능이 GET 요청 및 경로/
에서만 실행되도록 제한할 수 있습니다.
const express = require('express')
const app = express()
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.get('/', (req, res, next) => {
console.log(req.method);
next();
});
app.get('/', (req, res) => {
res.json();
})
app.post('/', (req, res) => {
res.json();
})
app.listen(3000, () => console.log('server started'));
그러면 GET
경로에 GET 요청을 할 때 기록되는 /
만 볼 수 있습니다.
일련의 미들웨어 기능 실행
next
메서드를 사용하여 시리즈의 다음 미들웨어 함수를 호출할 수 있으므로 미들웨어 함수 호출을 함께 연결할 수 있습니다.
예를 들어 다음이 있는 경우:
const express = require('express')
const app = express()
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.use(
(req, res, next) => {
console.log('middleware 1 called');
next();
},
(req, res, next) => {
console.log('middleware 2 called');
next();
}
);
app.get('/', (req, res) => {
res.json();
})
app.listen(3000, () => console.log('server started'));
그런 다음 우리는 다음을 봅니다.
middleware 1 called
middleware 2 called
각 미들웨어의 console.log
출력에서.
미들웨어에서 응답을 보내면 다음 미들웨어가 호출되지 않습니다. 예를 들어 다음이 있는 경우:
const express = require('express')
const app = express()
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.get('/',
(req, res, next) => {
next()
},
(req, res, next) => {
res.send('Second middleware');
}
)
app.get('/', (req, res, next) => {
res.end();
})
app.listen(3000, () => console.log('server started'));
그런 다음 /
에 요청할 때 'Second middleware' 출력을 얻습니다.
우리의 라우트 핸들러:
app.get('/', function (req, res, next) {
res.end();
})
호출되지 않았습니다.
다음과 같이 next
에 전화할 수 있습니다.
next('route');
다른 미들웨어 기능을 무시하고 경로 처리기로 바로 이동합니다.
예를 들어 다음이 있는 경우:
const express = require('express')
const app = express()
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.get('/:id',
(req, res, next) => {
if (req.params.id === '0') {
next('route');
return;
}
next();
},
(req, res, next) => {
res.send('Second middleware');
}
)
app.get('/:id', (req, res, next) => {
res.end(req.params.id);
})
app.listen(3000, () => console.log('server started'));
그런 다음 /0
에 요청하면 0
를 얻습니다. 그렇지 않으면 'Second Middleware'가 출력됩니다.
라우터 수준 미들웨어
라우터 수준 미들웨어는 앱 수준 미들웨어와 같은 방식으로 작동하지만 express.Router()
인스턴스 대신 express
인스턴스에 바인딩됩니다.
예를 들어 다음과 같이 사용할 수 있습니다.
const express = require('express')
const app = express()
const router = express.Router();
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
router.use((req, res, next) => {
req.requestTime = new Date();
next();
})
router.get('/', (req, res, next) => {
res.json(req.requestTime);
})
app.use('/', router);
app.listen(3000, () => console.log('server started'));
그런 다음 /
경로를 요청할 때 타임스탬프를 출력으로 반환합니다.
미들웨어 연결 및 경로 건너뛰기는 앱 수준 미들웨어와 동일한 방식으로 작동합니다. 예를 들어 다음과 같이 미들웨어를 연결하기 위해 다음을 작성할 수 있습니다.
const express = require('express')
const app = express()
const router = express.Router();
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
router.use(
(req, res, next) => {
console.log('middleware 1 called');
next();
},
(req, res, next) => {
console.log('middleware 2 called');
next();
}
)
router.get('/', (req, res, next) => {
res.json();
})
app.use('/', router);
app.listen(3000, () => console.log('server started'));
그런 다음 우리는 다음을 봅니다.
middleware 1 called
middleware 2 called
각 경로 미들웨어의 console.log
출력에서.
next('route')
를 사용하여 다음과 같이 경로로 건너뛸 수 있습니다.
const express = require('express')
const app = express()
const router = express.Router();
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
router.get('/:id',
(req, res, next) => {
if (req.params.id === '0') {
next('route');
return;
}
next();
},
(req, res, next) => {
res.send('Second middleware');
}
)
router.get('/:id', (req, res, next) => {
res.end(req.params.id);
})
app.use('/', router);
app.listen(3000, () => console.log('server started'));
그런 다음 /0
에 요청하면 0
를 얻습니다. 그렇지 않으면 'Second Middleware'가 출력됩니다.
결론
Express 미들웨어를 사용하는 것은 간단합니다. app.use
미들웨어가 모든 요청 메서드에 대해 실행되도록 하거나 app.METHOD
지정된 메서드에 대해 실행되도록 전달할 수 있습니다.
next
를 호출하여 다음 미들웨어를 호출하고 next('route')
를 호출하여 미들웨어에서 직접 경로 핸들러를 호출할 수 있습니다.
각각 express.Router()
및 express()
에 바인딩한다는 점을 제외하고는 모든 것이 경로 및 앱 수준 미들웨어에 모두 적용됩니다.
Reference
이 문제에 관하여(익스프레스 미들웨어 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/aumayeung/using-express-middleware-1921
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
모든 경로가 호출될 때 사용되는 미들웨어를
app.use
메서드에 콜백으로 전달하여 실행할 수 있습니다.하나의 요청 메서드의 요청이 호출될 때만 미들웨어 함수가 호출되도록 하려면 이를
app.METHOD
메서드에 콜백으로 전달할 수 있습니다. 여기서 METHOD
는 get
, post
, put
, delete
등입니다.예를 들어 미들웨어 함수를 작성하고
app.use
에 전달하여 다음과 같이 요청의 요청 방법을 기록할 수 있습니다.const express = require('express')
const app = express()
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.use((req, res, next) => {
console.log(req.method);
next();
});
app.get('/', (req, res) => {
res.json();
})
app.listen(3000, () => console.log('server started'));
그런 다음
GET
에 GET 요청을 할 때 /
기록되어야 합니다.다음과 같이 작성하여 미들웨어 기능이 GET 요청 및 경로
/
에서만 실행되도록 제한할 수 있습니다.const express = require('express')
const app = express()
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.get('/', (req, res, next) => {
console.log(req.method);
next();
});
app.get('/', (req, res) => {
res.json();
})
app.post('/', (req, res) => {
res.json();
})
app.listen(3000, () => console.log('server started'));
그러면
GET
경로에 GET 요청을 할 때 기록되는 /
만 볼 수 있습니다.일련의 미들웨어 기능 실행
next
메서드를 사용하여 시리즈의 다음 미들웨어 함수를 호출할 수 있으므로 미들웨어 함수 호출을 함께 연결할 수 있습니다.
예를 들어 다음이 있는 경우:
const express = require('express')
const app = express()
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.use(
(req, res, next) => {
console.log('middleware 1 called');
next();
},
(req, res, next) => {
console.log('middleware 2 called');
next();
}
);
app.get('/', (req, res) => {
res.json();
})
app.listen(3000, () => console.log('server started'));
그런 다음 우리는 다음을 봅니다.
middleware 1 called
middleware 2 called
각 미들웨어의 console.log
출력에서.
미들웨어에서 응답을 보내면 다음 미들웨어가 호출되지 않습니다. 예를 들어 다음이 있는 경우:
const express = require('express')
const app = express()
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.get('/',
(req, res, next) => {
next()
},
(req, res, next) => {
res.send('Second middleware');
}
)
app.get('/', (req, res, next) => {
res.end();
})
app.listen(3000, () => console.log('server started'));
그런 다음 /
에 요청할 때 'Second middleware' 출력을 얻습니다.
우리의 라우트 핸들러:
app.get('/', function (req, res, next) {
res.end();
})
호출되지 않았습니다.
다음과 같이 next
에 전화할 수 있습니다.
next('route');
다른 미들웨어 기능을 무시하고 경로 처리기로 바로 이동합니다.
예를 들어 다음이 있는 경우:
const express = require('express')
const app = express()
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.get('/:id',
(req, res, next) => {
if (req.params.id === '0') {
next('route');
return;
}
next();
},
(req, res, next) => {
res.send('Second middleware');
}
)
app.get('/:id', (req, res, next) => {
res.end(req.params.id);
})
app.listen(3000, () => console.log('server started'));
그런 다음 /0
에 요청하면 0
를 얻습니다. 그렇지 않으면 'Second Middleware'가 출력됩니다.
라우터 수준 미들웨어
라우터 수준 미들웨어는 앱 수준 미들웨어와 같은 방식으로 작동하지만 express.Router()
인스턴스 대신 express
인스턴스에 바인딩됩니다.
예를 들어 다음과 같이 사용할 수 있습니다.
const express = require('express')
const app = express()
const router = express.Router();
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
router.use((req, res, next) => {
req.requestTime = new Date();
next();
})
router.get('/', (req, res, next) => {
res.json(req.requestTime);
})
app.use('/', router);
app.listen(3000, () => console.log('server started'));
그런 다음 /
경로를 요청할 때 타임스탬프를 출력으로 반환합니다.
미들웨어 연결 및 경로 건너뛰기는 앱 수준 미들웨어와 동일한 방식으로 작동합니다. 예를 들어 다음과 같이 미들웨어를 연결하기 위해 다음을 작성할 수 있습니다.
const express = require('express')
const app = express()
const router = express.Router();
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
router.use(
(req, res, next) => {
console.log('middleware 1 called');
next();
},
(req, res, next) => {
console.log('middleware 2 called');
next();
}
)
router.get('/', (req, res, next) => {
res.json();
})
app.use('/', router);
app.listen(3000, () => console.log('server started'));
그런 다음 우리는 다음을 봅니다.
middleware 1 called
middleware 2 called
각 경로 미들웨어의 console.log
출력에서.
next('route')
를 사용하여 다음과 같이 경로로 건너뛸 수 있습니다.
const express = require('express')
const app = express()
const router = express.Router();
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
router.get('/:id',
(req, res, next) => {
if (req.params.id === '0') {
next('route');
return;
}
next();
},
(req, res, next) => {
res.send('Second middleware');
}
)
router.get('/:id', (req, res, next) => {
res.end(req.params.id);
})
app.use('/', router);
app.listen(3000, () => console.log('server started'));
그런 다음 /0
에 요청하면 0
를 얻습니다. 그렇지 않으면 'Second Middleware'가 출력됩니다.
결론
Express 미들웨어를 사용하는 것은 간단합니다. app.use
미들웨어가 모든 요청 메서드에 대해 실행되도록 하거나 app.METHOD
지정된 메서드에 대해 실행되도록 전달할 수 있습니다.
next
를 호출하여 다음 미들웨어를 호출하고 next('route')
를 호출하여 미들웨어에서 직접 경로 핸들러를 호출할 수 있습니다.
각각 express.Router()
및 express()
에 바인딩한다는 점을 제외하고는 모든 것이 경로 및 앱 수준 미들웨어에 모두 적용됩니다.
Reference
이 문제에 관하여(익스프레스 미들웨어 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/aumayeung/using-express-middleware-1921
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
const express = require('express')
const app = express()
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.use(
(req, res, next) => {
console.log('middleware 1 called');
next();
},
(req, res, next) => {
console.log('middleware 2 called');
next();
}
);
app.get('/', (req, res) => {
res.json();
})
app.listen(3000, () => console.log('server started'));
middleware 1 called
middleware 2 called
const express = require('express')
const app = express()
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.get('/',
(req, res, next) => {
next()
},
(req, res, next) => {
res.send('Second middleware');
}
)
app.get('/', (req, res, next) => {
res.end();
})
app.listen(3000, () => console.log('server started'));
app.get('/', function (req, res, next) {
res.end();
})
next('route');
const express = require('express')
const app = express()
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.get('/:id',
(req, res, next) => {
if (req.params.id === '0') {
next('route');
return;
}
next();
},
(req, res, next) => {
res.send('Second middleware');
}
)
app.get('/:id', (req, res, next) => {
res.end(req.params.id);
})
app.listen(3000, () => console.log('server started'));
라우터 수준 미들웨어는 앱 수준 미들웨어와 같은 방식으로 작동하지만
express.Router()
인스턴스 대신 express
인스턴스에 바인딩됩니다.예를 들어 다음과 같이 사용할 수 있습니다.
const express = require('express')
const app = express()
const router = express.Router();
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
router.use((req, res, next) => {
req.requestTime = new Date();
next();
})
router.get('/', (req, res, next) => {
res.json(req.requestTime);
})
app.use('/', router);
app.listen(3000, () => console.log('server started'));
그런 다음
/
경로를 요청할 때 타임스탬프를 출력으로 반환합니다.미들웨어 연결 및 경로 건너뛰기는 앱 수준 미들웨어와 동일한 방식으로 작동합니다. 예를 들어 다음과 같이 미들웨어를 연결하기 위해 다음을 작성할 수 있습니다.
const express = require('express')
const app = express()
const router = express.Router();
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
router.use(
(req, res, next) => {
console.log('middleware 1 called');
next();
},
(req, res, next) => {
console.log('middleware 2 called');
next();
}
)
router.get('/', (req, res, next) => {
res.json();
})
app.use('/', router);
app.listen(3000, () => console.log('server started'));
그런 다음 우리는 다음을 봅니다.
middleware 1 called
middleware 2 called
각 경로 미들웨어의
console.log
출력에서.next('route')
를 사용하여 다음과 같이 경로로 건너뛸 수 있습니다.const express = require('express')
const app = express()
const router = express.Router();
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
router.get('/:id',
(req, res, next) => {
if (req.params.id === '0') {
next('route');
return;
}
next();
},
(req, res, next) => {
res.send('Second middleware');
}
)
router.get('/:id', (req, res, next) => {
res.end(req.params.id);
})
app.use('/', router);
app.listen(3000, () => console.log('server started'));
그런 다음
/0
에 요청하면 0
를 얻습니다. 그렇지 않으면 'Second Middleware'가 출력됩니다.결론
Express 미들웨어를 사용하는 것은 간단합니다. app.use
미들웨어가 모든 요청 메서드에 대해 실행되도록 하거나 app.METHOD
지정된 메서드에 대해 실행되도록 전달할 수 있습니다.
next
를 호출하여 다음 미들웨어를 호출하고 next('route')
를 호출하여 미들웨어에서 직접 경로 핸들러를 호출할 수 있습니다.
각각 express.Router()
및 express()
에 바인딩한다는 점을 제외하고는 모든 것이 경로 및 앱 수준 미들웨어에 모두 적용됩니다.
Reference
이 문제에 관하여(익스프레스 미들웨어 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/aumayeung/using-express-middleware-1921
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(익스프레스 미들웨어 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aumayeung/using-express-middleware-1921텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)