개발로그필름

[WEB] middleware 본문

WEB

[WEB] middleware

yuullog 2022. 7. 15. 10:27
728x90
반응형
SMALL

middleware는 middle + software의 합성어로 중간에 있는 소프트웨어이다

앞서 request, response 두 개의 argument를 살펴보았는데 next argumnet가 하나 더 있다

next argument는 다음 함수를 호출해준다

만약 함수가 next 함수를 호출한다면 이 함수는 middleware라는 것을 알 수 있다

middleware는 사람들이 웹사이트의 어디를 갈지 알려준다

 

app.use()는 global middleware를 만들 수 있게 해준다

순서가 중요한데 middleware의 use가 먼저 온 뒤 URL의 get이 와야 한다

 

const logger = (req, res, next) => {
    console.log(`${req.method} ${req.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("I love middlewares.");
};

const handleProtected = (req, res) => {
    return res.send("Welcome to the private lounge.");
}

app.use(logger);
app.use(privateMiddleware);

app.get("/", handleHome);
app.get("/protected", handleProtected);

 

두 개의 middleware를 작성해보았는데 logger middleware는 application 전체에서 사용되고 있고

method와 url을 console.log 해주는 역할을 한다

privateMiddleware는 url 정보를 받아 /protected와 같은 것을 확인하면 중간에 개입해 다음 함수 호출을 막고 url이 /protected가 아니라면 다음 함수를 호출하는 middleware이다

 

여기서 중요한 점은 middleware가 next() 함수를 호출하지 않을 시 handleProtected와 handleHome 같은 다음 함수들은 절대로 실행되지 않는다

반응형
LIST

'WEB' 카테고리의 다른 글

[WEB] Pug  (0) 2022.07.24
[WEB] Router  (0) 2022.07.23
[WEB] Request, Response  (0) 2022.07.14
[WEB] express  (0) 2022.07.13
[WEB] babel 실행, Nodemon  (0) 2022.07.12
Comments