on
[Nodejs] 여러 개의 미들웨어 등록하기 - 컴도리돌이
[Nodejs] 여러 개의 미들웨어 등록하기 - 컴도리돌이
728x90
728x90
미들웨어가 뭐야?
익스프레스(express)에서는 웹 요청과 응답에 관한 정보를 사용해 필요한 처리를 진행할 수 있도록 독립된 함수로 분리한다. 이렇게 분리한 각각의 것들을 미들웨어라고 부른다. 예를 들어, 클라이언트에서 요청했을 때 로그로 남기는 간단한 기능을 함수로 만든 후 use()메소드를 사용해 미들웨어로 등록해 두면, 모든 클라이언트 요청이 이 미들웨어를 거치면서 로그를 남기게 된다.
각각의 미들웨어는 next() 메소드를 호출하여 그다음 미들웨어가 처리할 수 있도록 순서를 넘길 수 있다.
클라이언트 요청은 어떻게 처리하지?
라우터는 클라이언트의 요청 패스를 보고 이 요청 정보를 처리할 수 있는 곳으로 기능을 전달해 주는 역할을 한다. 이러한 역할을 흔히 라우팅(routing)이라 부른다.
익스프레스(express) 요청 객체와 응답 객체
메소드 이름 설명 send([body]) 클라이언트에 응답 데이터를 보낸다. status(code) http 상태 코드를 반환한다. sendStatus(statusCode) http 상태 코드를 반환한다. redirect([status,] path) 웹페이지 경로를 강제로 이동한다. render(view,[,locals][,callback]) 뷰 엔진을 사용해 문서를 만든 후 전송한다.
여러 개의 미들 웨어를 등록하여 사용하기
첫 번째 미들웨어에서는 req 객체에 user 속성을 추가하고 그 값으로 문자열을 하나 넣었다. 이 정보를 사용자 정보라고 하며, 첫 번째 미들웨어에서는 사용자 정보를 설정한 것이다. 만약 클라이언트에 응답을 보낼 때 사용자 정보를 같이 알려주고 싶은데 클라이언트에 응답을 보내는 기능은 두 번째 미들웨어에서 담당한다고 가정하여 코드를 작성하였다. 두 번째 미들웨어에서는 req 객체에 설정된 user 속성을 확인하여 출력하였다.
//express 기본 모듈 불러오기 var express = require('express'), http = require('http'); var app = express(); //익스프레스 객체 생성. app.use(function(req,res,next){ console.log('첫 번째 미들웨어에서 요청을 처리함.'); req.user = 'mike'; next(); }) app.use('/',function(req,res,next){ console.log('두 번째 미들웨어에서 요청을 처리함.'); res.writeHead('200',{'Content-type' : 'text/html;charset=utf8'}); res.end(' express 서버에서 ' + req.user + '가 응답한 결과입니다.'); }) app.set('port',process.env.PORT || 3000); // 기본 포트를 app 객체에 속성을 설정. http.createServer(app).listen(app.get('port') , function(){ console.log('익스프레스 서버를 시작 : ' + app.get('port')); }); //express 서버 시작.
<실행 화면>
728x90
728x90
from http://comdolidol-i.tistory.com/181 by ccl(A) rewrite - 2021-07-27 21:00:21