golobal middleware를 만들 수 있게 해줌 (app전체 어느 URL에도 작동하는 middleware)
app.use() 은 무조건 get위에 와야한다.
(get보다 아래 있으면 middleware이 작동하지 않음)
모든 route에서 이 함수를 사용하는 것
import express from "express";
const PORT = 4000;
const app = express();
//application설정
const loggerMiddleware = (req, res, next) => {
console.log(`${req.method} ${req.url}`); //어떤 method가 어느 URL로 향하는지
next();
};
const privateMiddleware = (req, res, next) => {
const url = req.url;
if (url === "/protected") {
return res.send("<h1>Not Allowed</h1>");
}
console.log("Allowed, you may continue.");
next();
};
const handlehome = (req, res) => {
return res.send("hi");
};
const handledProtected = (req, res) => {
return res.send("welcome to private lounge.");
};
app.use(loggerMiddleware);
app.use(privateMiddleware);
app.get("/", handlehome); //누군가가 root page로 get request를 보낸다면, 함수 작동
app.get("/protected", handledProtected);
const handleListening = () =>
console.log(`✅ Server listening on port http://localhost:${PORT} 🚀`);
app.listen(PORT, handleListening);
loggerMiddleware
는 app 전체에서 사용되고 있고 request에 관한 모든 정보를 가지고 있는 request object를 이용해서 method와 url을 console.log
해주는 역할
privateMiddleware
는 url정보를 받아서 /protected
와 같은 걸 확인하면 중간에 개입해서 다음 함수를 호출하는 걸 막고 url이 /protected
가 아니라면 다음 함수 호출
브라우저console.log
브라우저
console.log