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 | 서버 오류 |
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")
})