ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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

    댓글

Designed by Tistory.