상세 컨텐츠

본문 제목

[Express] Express.js 란

Node.js

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

본문

Express란

 
Node.js에서는 MVC( Model- View- Model) 패턴의 적용을 쉽게 해주는 여러 서드파티 모듈이 있다.
그중에 가장 대중들이 널리 쓰는 모듈이 Express.js 이다.
 
Express.js는 싱글페이지 , 멀티페이지 그리고 하이브리드 웹 어플리케이션을 작성하기 위한 강력한 기능들을 제공함으로써, 간편한 코드로 휼륭한 웹 어플리케이션을 만들 수 있게 해 주며, 특히 강하고 유연한 라우터 기능을 제공한다.

 

Express.js의 하위 계층 : Node.js의 HTTP Server

var http = require('http');
http.createServer(function(req,res){
    res.writeHead(200);
    res.end('hello world');
}).listen(6549);
console.log('server start hello world');
위의 app을 실행시키면 "hello world"라는 응답을 받게 된다. 
웹 브라우저에서 http://localhost:6549의 주소로 접속하면 응답을 받는다.
 
◎ 서버 생성시 인자값으로 넣었던 익명 함수
 
해당 함수는 클라이언트로부터 요청이 발생하였을 때 매번 호출되는 'Request Handler' 이다. Request Handler에서 첫 번째 인자로 넘겨받은 ( req ) 요청객체에서 몇가지 값을 추출하면 다음과 같다.
var http = require('http');
 
http.createServer(function(req, res) {
 
    // Build the answer
    var answer = "";
    answer += "Request URL: " + req.url + "\n";
    answer += "Request type: " + req.method + "\n";
    answer += "Request headers: " + JSON.stringify(req.headers) + "\n";
 
    // Send answer
    res.writeHead(200, {'Content-Type' : 'text/plain'});
    res.end('Hello World\n\n' + answer);
 
}).listen(6549);

 

서버를 구동 한 후에 http://localhost:6549로 접속하게 되면 다음과 같은 헤더 정보를 확인할 수 있을것이다.

두번째 인자인 ( res ) 응답 객체를 살펴보면, res.end()함수가 실제로 데이터를 전송하는 주체이다. 이함수는 반드시 호출되어야 하고 만약 호출하지 않는다면 서버는 영원히 멈추지 않게 된다.

◎ " / " ,  " / about " 페이지로 라우팅 하고 이외의 다른 url이 들어오는 경우 404에러를 출력 하는 예
var http = require('http');
http.createServer(function(req, res) {
    // Main page
    if ( req.url == "/") {
        res.writeHead(200, {"Content-Type" : "text/html" });
        res.end("Welcome to the Main Page");
     }
 
     // About page
     else if ( req.url == "/about" ) {
         res.writeHead(200, {"Content-Type" : "text/html" });
         res.end("Welcome to the about page");
     }
 
     // File not found page
     else {
        res.writeHead(404, {"Content-Type" : "text/plain" });
        res.end("404 error");
     }
 
}).listen(6549);
위 소스는 if 구문으로 url을 분기 시켰다. 하지만 웹 어플리케이션의 페이지가 많아진다면 매우 복잡한 소스가 될 수 있다.
이를 간단하게 만들어주는 프레임워크가 바로 Express의 Connect이다.

관련글 더보기