BackEnd/Node.js
express에 미들웨어 설정하기
Bumang
2024. 8. 23. 02:25
미들웨어란?
미들웨어(Middleware)는 Express.js와 같은 웹 애플리케이션 프레임워크에서
HTTP 요청(Request)과 응답(Response) 사이에 실행되는 함수이다.
미들웨어는 요청 객체, 응답 객체, 그리고 다음 미들웨어 함수를 제어할 수 있다.
할 수 있는 것:
- 요청 처리: 요청을 분석하고 필요한 데이터를 추가하거나, 요청을 변경할 수 있다.
- 응답 처리: 응답을 생성하거나 수정할 수 있다.
- 요청 흐름 제어: 특정 조건에 따라 다음 미들웨어로 요청을 전달하거나, 요청 처리를 종료하고 응답을 보낼 수 있다.
- 공통 기능 처리: 인증, 로깅, 에러 처리, 정적 파일 제공 등의 기능을 공통으로 처리하는 데 자주 사용된다.
미들웨어는 app.use() 또는 특정 라우트에 연결하여 사용되며,
여러 개의 미들웨어를 배열로 묶어 순차적으로 연결하여 사용할 수 있다.
사용법 1. app.use(...)
예시: 로그인이나 회원가입 시 유저가 아이디 혹은 비번을 빈칸으로 제출 시 에러처리
route도 배열로 묶어서 여러 경로에 적용할 수 있는 것도 주의할만하다.
next를 꼭 실행시켜줘야 다음 라우트를 찾아간다는 것을 유념해야된다.
app.use(["/login", "/signup"], (req, res, next) => {
console.log(req, "middleware login");
if (req.body.username === "" || req.body.password === "") {
res.status(401).json({ error: "빈칸 안 돼" });
} else {
next();
}
});
사용법 2. 가운데 넣기 : app.get("/login", middleWare ,( req, res )=> { ... })
예시: 라우트와 콜백 사이에 미들웨어를 넣어서 사용할수도 있다.
정말 미들웨어같은 위치가 아닐 수 없다. pathname과 콜백 사이..
app.get("/login", middleWare ,( req, res )=> { ... })
물론 여기서도 화살표 함수 형태로 콜백함수를 넣어줘도 된다.
app.get("/login", (req, res, next) => {
...
next()
}, (req, res) => {
...
})