ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Node.JS 문법] HTTP모듈
    Node.js 2020. 7. 22. 00:04

    Node J.S에서 HTTP 모듈을 사용하여 서버를 구축해 본다.

     

    Hello world 띄우기

    const http = require('http');
    
    http.createServer((req, res) => {
        console.log('서버가 열렸습니다.');
        res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
        res.write('<h1>Hello World!</h1>');
        res.end();
    }).listen(8080);
    

    1. 동작 원리 설명

    1) http모듈

     

    Node의 내장 모듈인 'http'를 require 함수를 통하여 가져 와 const http에 저장한다.

    모듈 안의 콜백함수인 createServer() 을 통해 request(요청) 와 response(응답)의 매개 변수를 이용해 

    출력을 해본다.

     

    2) createServer() 함수와 콜백함수

    createServer()는 웹 브라우저의 request(요청)가 오게 되면,  콜백 함수가 작동하게 된다.

    콜백함수는 function 함수이름(생략가능) (req,res){ (내용) }의 형태로 표기 할 수 있고,

    최신 문법에서는 화살표 함수라 불리며, 함수이름(생략가능) (매개변수) => { (내용) } 의 형태로

    표현이 가능하다.

     

    3) 콜백 함수에서의 response(응답) 사용

    서버는 클라이언트의 req(요청)을 받게 되면 클라이언트에 res(응답)을 한다.

    res.writeHead(상태코드, 헤더 내용) 이 오게 된다. head부분에 내용을 추가 하겠다고 보면된다.

    상태코드에서 200은 잘 받았다는 성공의 의미라 보면 되고, 뒤의 내용은 html로 작성하고,

    charset=utf-8을 적음으로써, 한글 사용을 하겠다는 의미이다.

    res.write()body부분에 내용을 넣겠다는 소리이고 이로써 Hello World!를 출력할 수 있게 되었다.

     

    4) listen() 매서드

    서버의 매서드 중 포트 할당을 위해 listen(port, hostname, backlog, callback)매서드가 필요하다.

    port포트의 번호이고, hostname은 듣고자하는 hostip주소이며,

    backlog는 연결할 때 필요한 queue의 최대 크기라 보면 되고 default값은511이다.

    callback은 listen함수가 작동하면 일어나는 콜백 함수이다.

     

    2. 위의 코드와 html연동

    res.writeHead, res.write를 통해 적어 내린다면 코드가 길어 지므로, html로 적은 코드를 바로 옮겨

    볼 수 있도록 한다.

     

    html 코드 (practice.html)

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
        </head>
        <body>
            <h1>Hello World!</h1>
        </body>
    </html>
    

     

    Node.JS 코드

    const http = require('http');
    const fs = require('fs');
    
    http.createServer((req, res) => {
        console.log('서버가 열렸습니다.');
        fs.readFile('./practice.html', (err, data) => {
            if (err) {
                throw err;
            }
            res.end(data);
        });
    }).listen(8080);
    

    fs모듈을 사용하여 html파일을 fs.readFile('./읽을 파일', 콜백함수)로 읽었다.

    html파일을 읽은 뒤, data부분을 res.end(data)로 넣어주었다.

    댓글

Designed by Tistory.