-
Express 미들웨어NodeJS 2019. 7. 4. 12:12
Middleware?
: 라우팅 하는 작업에서 요청을 받고 응답 메서드를 실행하기 전에 처리하는 메서드를 말한다
예제를 살펴보자
import express from "express"; const app = express(); const PORT = 3000; const handleHome = (req,res)=>{ res.send("Hello Wolrd"); } app.get("/", handleHome); app.listen(PORT);
위의 코드에서 handleHome은 응답메서드 이다
http://localhost:3000 으로 GET요청을 받았을 때 이 응답 메서드가 실행되는데
GET요청을 받고 응답메서드(handleHome)이 실행되기 전 미들웨어를 넣어 실행하게 하려면 아래처럼 작성하면 된다
import express from "express"; const app = express(); const PORT = 3000; const handleHome = (req,res)=>{ res.send("Hello Wolrd"); } const middleWare = (req,res,next)=>{ console.log("I'm middleware"); next(); } app.get("/", middleWare, handleHome); app.listen(PORT);
이렇게 하면 handleHome 메서드가 실행되기 전에 콘솔에 "I'm middleware"가 나오게 된다
next() 는 다음 단계(다음미들웨어 or 응답메서드)로 넘겨주는 역할을 한다
이렇게 미들웨어를 개수 상관없이 넣을 수 있고
또한 미들웨어로 중간에서 끊을 수 있다
const middleWare = (req,res,next)=>{ res.send("I cut off!!!"); }
위 처럼 미들웨어에서 응답을 하고 next() 를 사용하지 않는다면 미들웨어가 응답메서드가 된다
전역 미들웨어
여러 라우팅 처리에 같은 미들웨어를 사용 할 수도 있으니 전역 미들웨어도 필요하다
import express from "express"; const app = express(); const PORT = 3000; const handleHome = (req,res)=>{ res.send("Hello Wolrd"); } const handleProfile = (req,res)=>{ res.send("Welcome Profile"); } const middleWare = (req,res,next)=>{ console.log("I'm middleware"); next(); } app.use(middleWare); app.get("/", handleHome); app.get("/profile", app.listen(PORT);
위처럼 app.use()를 사용하면 된다
http//localhost:3000 와 http//localhost:3000/profile 두 곳 다 접속해도 미들웨어는 실행된다
( app.use()의 위치가 상당히 중요하니 적용할 라우팅 위쪽에 작성하자! )
다른 미들웨어
좋은 사람들이 많은 미들웨어를 만들어 놓았으니 한번 써보는 것도 좋다
로깅(로그를 기록하는) 미들웨어 : morgan
nodeJS 보안 미들웨어 : helmet
'NodeJS' 카테고리의 다른 글
Express X PUG (0) 2019.07.04 Express Router (0) 2019.07.04 Express 라우팅 (0) 2019.07.04 Express? (0) 2019.07.03 NodeJS? (0) 2019.06.30