Front-End/Node.js

[Node.js] 3. http 모듈 (+ MIME 형식)

nanee_ 2021. 10. 26. 11:24
728x90
반응형
SMALL

http 모듈

: Node.js 에서 가장 기본적이고 중요한 서버 모듈이다.

HTTP 웹 서버를 생성하는 것과 관련된 모든 기능을 담당한다.

 

server객체, request 객체, response 객체가 있다.

자세히 알아보도록 하겠다.

 

1. server 객체

http 모듈의 createServer() 메소드를 사용해 생성한다.

 

- 메소드

listen() : 서버를 실행하고, 클라이언트를 기다린다.

               사용할 포트번호(3000), 익명함수로 서버가 실행되면 실행할 코드들을 작성해 준다.

 

 

 

close() : 서버를 종료한다.

 

- 이벤트

request : 클라이언트가 서버에 요청할 때 발생하는 이벤트이다.

connection : 클라이언트가 접속할 때 발생하는 이벤트이다.

close : 서버가 종료될 때 발생하는 이벤트이다.

 

2. request 객체

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

 

- 속성

method : 클라이언트 요청 방식을 나타낸다. GET, POST 와 같은 방식이 있다.

url : 클라이언트가 요청한 URL을 나타낸다.

 

URL은 ?전까지의 주소를 의미한다.

 

3. response 객체

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

 

- 메소드

writeHead() : 응답 헤더를 작성하는 메서드이다.

end() : 응답 본문을 작성하는 메서드이다.

 

writeHead() 메서드에는 statusCode와 headers를 작성해주어야한다.

statusCode 부분에는 

headers 부분에 MIME 형식을 작성해 주어야한다.

 

 

res.writeHead(200, {'content-type':'text/html'});

 

MIME 형식

: 클라이언트가 받을 파일 정보의 타입이다.

 

text/plain : 일반적인 text 파일

text/html : html 형식 파일

text/css : css 형식 파일

text/xml : xml 형식 파일

image/jpeg : jpeg 이미지 파일

image/png : png 이미지 파일

video/mpeg : mpeg 동영상 파일

audio/mp3 : mp3 음악 파일

 

 

이제 이 객체들을 활용해서 서버를 생성해보겠다.

 

예제코드

const http = require('http');

// 서버 생성
http.createServer((req, res) => {
    res.writeHead(200, {'content-type':'text/html'});
    res.end('<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>http 모듈 테스트</title></head><body style="background-color: deepskyblue;"><h2>http 모듈 테스트</h2><p>처음으로 실행하는 node.js http 서버</p></body></html>');
}).listen(3000, () => {
    console.log('서버 실행중...');
});

 

createServer()를 하고 서버를 실행하기 위해서 server객체의 listen() 메소드를  사용해 주어야한다.

3000번이라는 포트번호를 사용하고, 함수로 console창에 서버가 실행되면 띄울 메세지를 남겨준 것이다.

 

localhost:3000 이라는 주소로 이제 실행된 서버를 확인할 수 있다. 

 

위의 코드는 직접 html 코드를 res.end()에 작성해주는 방식이다.

굉장히 가독성 뿐만 아니라 작성하기에도 불편하다.

 

 

 

이번에는 fs 모듈을 사용해서 html 파일을 불러와 서버와 연결시켜보도록 하겠다.

 

 

test를 위한 html 파일을 만들었다.

 

const http = require('http');
const fs = require('fs');

// 서버 생성
http.createServer((req, res) => {
    fs.readFile('test.html', (err, data)=>{
        if(err){
            console.log(err);
        }else{
            res.writeHead(200, {'content-type':'text/html'});
            res.end(data);
        }
    })
}).listen(3000, () => {
    console.log('서버 실행중...');
});

 

fs모듈의 비동기 방식을 사용해서 test.html 파일을 읽어들였다.

callback함수를 통해 잘 읽어졌으면 res.end(data)로 읽어들인 html파일을 전달한다.

 

 

터미널을 통해 실행을 시켜보면

잘 불러와서 띄워진 것을 확인할 수 있다.

 

 

 

 

 

 

 

728x90
반응형
LIST