http 모듈과 express 모듈 차이

이진아·2021년 1월 7일
6

Node.js

목록 보기
4/6
post-thumbnail

오늘은 node.js에서 서버모듈을 다루는 http모듈과 express 모듈의 개념을 정확히 복습할 겸 정리를 해보았다!

1. http 모듈

http란 node.js에서 사용하는 서버 모듈이다. http 웹 서버를 생성하는 것과 관련된 모든 기능을 담당한다.

http 모듈은 server객체, request 객체, response객체를 사용한다.

1. server 객체

http 모듈의 createServer() 메소드를 사용하여 server 객체를 생성한다.

메소드는 listen(), close()를 사용한다.
listen() : 서버를 실행하고 클라이언트를 기달린다.
close() : 서버를 종료한다.

이벤트는 request, connection, close를 사용한다.
request : 클라이언트가 서버에 요청할 때 발생하는 이벤트이다.
connection : 클라이언트가 접속할 때 발생하는 이벤트이다.
close : 서버가 종료될 때 발생하는 이벤트이다.

2. request 객체

클라이언트가 서버에게 전달하는 메세지(정보)를 담는 객체입니다.

속성
method : 클라이언트 요청 방식으로 GET, POST가 있다.
url : 클라이언트가 요청한 URL을 나타낸다.
headers : 요청 메세지 헤더를 나타낸다.

url.parse(): URL 형태를 분석한다.
url.parse().pathname : "/blog/index.nhn"

3. response 객체

서버에서 클라이언트로 응답 메세지를 전송시켜주는 객체이다.

메소드에는 writeHead()와 end()가 있다.
writeHead() : 응답 헤더를 작성합니다.
end() : 응답 본문을 작성합니다.

아주 기초적인 코드를 예시로 들면 아래 코드가 있다.


    http.createServer((req, res) => {

        res.writeHead(200, {'content-type':'text/html'});
        res.end('<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>node.js</title></head><body><p>처음으로 만드는 node.js 웹서버</p></body></html>');


    }).listen(3000, () =>{
        console.log('서버 실행중...');
        });

2. express 모듈

express 모듈이란 http 모듈처럼 서버 모듈이다.
http와 다른점은 http 모듈만 사용해서 웹 서버를 구성하면 직접 많은 기능을 개발해야한다. 하지만 이러한 문제를 해결하기 위해 만들어진 모듈이 익스프레스 이다.
익스프레스 모듈을 사용하면 간단한 코드로 웹 서버의 기능을 대부분 구현 할 수있고, 미들웨어와 라우터를 사용하여 편리하게 웹 서버를 구성할 수 있다.

express 메소드

use() : 미들웨어 함수를 사용한다.
get() : get으로 사용자 정보를 전달 받는다.
set() : 서버 설정을 위한 속성을 지정한다.
redirect() : 웹 페이지의 경로를 강제로 이동시킨다.
send() : 클라이언트에 응답 데이터를 보낸다.
header() : 헤더를 확인한다.

express 모듈에 간단한 코드는 아래 코드가 있다.

        const app = express(); // 생성자
        const port = 3000;

        app.get('/', (req, res) => {
            res.send('익스프레스 서버 테스트!');
        });

        app.listen( port, () => {
            console.log(`${port} 포트로 서버 실행중...`);
        });
profile
새싹 개발자><

1개의 댓글

comment-user-thumbnail
2021년 9월 13일

정리 해주신거 잘 보고 갑니다~

답글 달기