HTTP 사용하기
Note

http

http는 내장 모듈이므로 별도의 설치 없이 바로 사용할 수 있다.

http_server_8080.js

1
2
3
4
5
6
7
8
9
10
const http = require("http");

http.createServer((req, res) => {
    res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
    res.write("<h1>8080</h1>");
    res.end("<p>Hello World!</p>");
})
    .listen(8080, () => {
        console.log("8080");
    })

createServer

req 객체는 요청

res 객체는 응답. writeHead는 HTTP 헤더를

HTTP 상태 코드 설명
2XX 성공
3XX 리다이렉션
4XX 요청 오류
5XX 서버 오류

https://developer.mozilla.org/ko/docs/Web/HTTP/Status

listen

http_server_8081.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const http = require("http");

const server = http.createServer((req, res) => {
    res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
    res.write("<h1>8081</h1>");
    res.end("<p>Hello World!</p>");
});
server.listen(8081)
server.on("listening", () => {
    console.log("8081");
})
server.on("error", (err) => {
    console.error(err)
})

text/html은 html파일, text/plain은 그냥 글

파일 실행

fs 모듈의 promises를 사용해 html 파일을 직접 읽을 수 있다. async/await로 비동기 사용

index.html

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <h1>8082</h1>
    <p>Hello World!</p>
</body>
</html>

http_server_8082.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const http = require("http");
const fs = require("fs").promises;

http.createServer(async (req, res) => {
    try {
        const data = await fs.readFile("./index.html");
        res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
        res.end(data);
    } catch(err) {
        console.error(err);
        res.writeHead(500, { "Content-Type": "text/plain; charset=utf-8" });
        res.end(err.message);
    }
})
    .listen(8082, () => {
        console.log("8082")
    })