서버/Express
ExpressJS middleware
realtrynna
2022. 1. 22. 20:01
ExpressJS middleware
Express는 middleware로 구성된다.
- 각 라우터별로 공통으로 실행하고 싶은 코드가 있을 시 사용
- app.use()로 장착
- 위에서 아래로 순서대로 실행됨
- middleware는 req res next가 매개변수인 함수
- req res 조작 가능
- next()로 다음 middleware로 넘어감
- app.set과의 차이 : app.set은 서버 내내 유지 req res는 요청 하는 동안만 유지
- req.body나 req.cookies같은 middleware의 데이터와 겹치지 않게 조심
- app.use가 middleware가 아니라 안에있는 req res next 함수가 middleware
- middleware를 app.use에 장착한거임
- middleware간 데이터 전달 가능(req.data 라우터 달라도 됨)
app.use((req, res, next) => {
req.data = "middleware 데이터 전달"
}, (req, res, next) => {
console.log(req.data);
});
next
concept : next를 호출해야 다음 코드로 넘어감
- next를 주석 처리하면 응답이 전송되지 않음
- 다음 middleware(route middleware)로 넘어가지 않음
- next(err) : error middleware
- netxt("route") : 다음 router
- if문으로 분기처리 가능
app.get("/", (req, res, next) => {
if (true) {
console.log("2번 실행");
next("route");
}
}, (req, rex, next) => {
res.send("1번 실행");
next();
});
app.get("/", (req, res, next) => {
res.send("2번 실행")
})
error middleware
concept : 모든 에러를 받을 수 있음
- err, req, res, next 매개변수가 4개
- err은 error에 관한 정보가 담김
- res.status(200) 메서드로 HTTP 상태 코드 지정 가능(default 200)
- 코드 가장 아래 위치
- error middleware
app.use((err, req, res, next) => {
res.send("에러처리 미들웨어");
console.error(err);
})