Node.js MiddleWares #01

0_CyberLover_0·2022년 3월 18일
0

Node.JS # 01

목록 보기
13/21
post-thumbnail

MiddleWare은 중간에 있는 소프트웨어라는 뜻이다.

Middleware는 request와 response 사이에 있다.

브라우저가 request한 다음 유저가 response하기전에 그사이에 Middleware가 있다.

한가지 기억할게 있다. 모든 middlewarehandler이고 모든 handlermiddleware이다.

handler보단 사실 controller라고 부르는게 맞다.

즉 모든 controller는 middleware이다.

controller에는 두 개의 argument 말고 하나 더 있다.

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

res.end()로 return하는것 대신 next()를 사용하면 어떻게 되는지 해보자.

const app = express();

const gossipMiddleware = (req, res, next) => {

console.log("I'm in the middle!");

next();

};

const handleHome = (req, res) => {

return res.send("<h1>I still love you.😍</h1>");

};

const handleLogin = (req, res) => {

return res.send({ message: "Login here." });

};

 app.get("/", gossipMiddleware, handleHome);

이렇게 되면 console에 I'm in the middleware라는 문구가 뜬다.

next는 어디든 포함 될수 있다.

그런데 handleHome이 next를 사용하면 next는 실행 되지 않는다.

왜냐하면 handleHome 다음에는 아무것도 없기 때문이다.

만약에 코드를 이런 식으로 수정한다면

const app = express();

const gossipMiddleware = (req, res, next) => {

 return res.send("I have the power now!");

next();

};

express는 handleHome을 호출하지 않는다.

return res.send("I have the power now!");

이 코드가 그 다음으로 넘어가지 못하게 중단 시켰기 때문이다.

middleware는 request에 응답하지 않는다.

request를 지속 시켜 준다.

middleware는 작업을 다음 함수에게 넘기는 함수이다.

응답하는 함수가 아니다.

이 middleware는 유저들이 website의 어디를 가려는지 말해준다.

이 처럼 작성을 해주면

const app = express();

const gossipMiddleware = (req, res, next) => {

console.log(`Someone is going to : ${req.url}`);

next();

};

console에 나타내 준다.

Someone is going to : / 라고 뜬다.

profile
꿈꾸는 개발자

0개의 댓글