상세 컨텐츠

본문 제목

[Express] Express의 미들웨어 Connect

Node.js

by 메타샤워 2023. 7. 19. 14:40

본문

 

Express의 미들웨어 Connect

 

connect는 Node.js의 기본 HTTP 모둘의 Server, ServerRequest, ServerResponse 객체를 포장( wrap )하여 유용한 기능을 제공하고 있고 , 그중 하나는 Server객체가 미들웨어의 스택을 사용할 수 있게 한것이다.
 
 

◎ 미들웨어란?

Node.js에서 말하는 미들웨어는 클라이언트의 요청(Request)를 제어하는 함수들의 집합 정도로 이해할 수 있다.
connect.createServer로 서버가 생성되면, 미리 명시한 미들웨어 함수들을 호출 할 수 있다.
클라이언트 요청이 들어오면, 첫 번째 미들웨어가 포장된 ServerResponse와 next 콜백과 함께 호출이 된다.
각 미들웨어는 next()함수를 통해 다음 계층으로 클라이언트 오청을 보낼지 말지 결정할 수 있다.
 
아무런 동작을 하지 않는 NO-OP 미들웨어의 예
function uselesseMW(req , res , next ) { next() }
미들웨어는 에러유무를 next() 함수의 첫 번째 인자로 넘길 수 있다.
// 모든 요청에 간단한 인터럽트를 생성하는 미들웨어
function worseThanUselessMiddleware(req, res, next) {
   next("Hey are you busy?");
}
미들웨어가 이런 식으로 에어를 반환하는 경우, 에러 핸들러 찾을 떄 까지 모든 하위 미들웨어는 수행이 되지 않는다.
위에서 정의한 미들웨어를 서버에서 사용할 수 있게 명시하려면, connect.createServer()를 통해 반환된 객체의 use()함수를 사용하면된다.
connect = require('connect');
server = connect.createServer();
server.use(worseThanuselessMiddleware);
특정 URL의 prefix를 구분하여 미들웨어를 구동시키고자 할 때 는 use()함수의 첫 번째 인자값에 해당 prefix를 넣어서 미들웨어에 등록하면 된다.
connect = require('connect');
server = connect.createServer();
server.use('/prefix'.worseThanuselessMiddleware);
아래 예제를 실행하기 위해서는 connect 모듈을 설치 해야 한다.
npm install connect
var connect = require('connect');
var http = require('http');
 
var app = connect();
 
app.use(function ( req,res,next){
    console.log("in comes a "+req.method + "to " + req.url);
    next();
});
 
app.use(function ( req,res){
    res.writeHead(200,{"Content-Type":"text/plain"});
    res.end("hello world");
})
 
http.createServer(app).listen(6549);
console.log("server start");

 

관련글 더보기