본문 바로가기

Node.JS

[Node.js 교과서] 3-1. 노드로 Http 서버 만들기, 3-2. fs로 HTML 파일 읽어 제공하기

요청과 응답 이해하기

1. 서버와 클라이언트

클라이언트가 서버로 요청 (request)을 보냄

서버는 요청을 처리

처리 후, 클라이언트로 응답 (response)을 보냄

 

노드 js는 자바스크립트 실행기 이지 서버가 아님

자바스크립트로 서버를 돌릴 수 있는 코드를 작성해 놓으면

노드가 그 코드를 실행해서 서버가 실행됨

 

 

2. 노드로 http 서버 만들기

http 요청에 응답하는 노드 서버

createServer로 요청 이벤트에 대기

req 객체는 요청에 관한 정보가, res 객체는 응답에 관한 정보가 담겨 있음

 

서버도 프로그램이기 때문에 node js가 createServer를 실행하는 순간 이 서버를 프로세스로 올려줘야함

프로세스에 올릴 때는 설정한 port에 올려야함

 

포트는 서버 내에서 프로세스를 구분하는 번호

기본적으로 http 서버는 80번 포트 사용 (생략 가능, https는 443)

Ex) www.gilbut.com:80 -> www.gilbut.com

다른 포트로 DB나 다른 서버 동시에 연결 가능

 

const http = require('http')
let PORT = 5000
http.createServer((req, res) => {
    //여기에 어떻게 응답할지 적습니다.
    res.write('<h1>Hello node! </h1>')
    res.write('<p>Hello server </p>')
    res.end('<p>Hello zerocho </p>')
    
})
    .listen(PORT, () => {
        console.log(`${PORT} 번 포트에서 서버 대기 중`)
    })

 

 

 

fs로 HTML 파일 읽어 제공하기

 

const http = require('http')
const fs = require('fs').promises
let PORT = 5000
http.createServer(async (req, res) => {
    //사파리 같은 브라우저는 아래 head에 작성해줘야 html이라고 인식함, 또한 한글을 인식하기 위해 chcarset 설정
    try {
        res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'})
        const data = await fs.readFile('./server.html');
        res.end(data);
    } catch (error) {
        console.error(error)
        res.writeHead(200, {'Content-Type':'text/plain; charset=utf-8'})
        res.end(error.message)
    }
    
})
    .listen(PORT, () => {
        console.log(`${PORT} 번 포트에서 서버 대기 중`)
    })