
fs로 HTML 읽기
HTML생성
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>node 서버 만들기</title>
</head>
<body>
<h1>헬로 워드</h1>
<p>방가방가</p>
</body>
</html>
server2.html이라는 파일을 생성했습니다.
fs비동기로 받기
비동기로 받는 이유는 정확하게 이해 하지못했다. 검색해봤는데 시원한 답을 못찾았다.
개인적인 생각으로는 http.createServer와 같은 동작이 비동기로 실행 되기 때문에 fs도 비동기로 받는게 이치에 맞지 않나 하는 생각이 있다.
const http = require('http')
const server = http.createServer((req, res) => {
}).listen(8080)
server.on('listening',()=>{
console.log('8080번 포트에서 서버 대기중입니다.')
})
server.on('error',(err)=>{
console.log(err)
})
다음과 같은 코드를 갖는 server2.js 파일을 만들었다.
우선 fs를 비동기로 받아봅니다
const fs = require('fs').promises
writeHead
writeHead는 헤더데이터를 전송할 수 있다.
response.writeHead(statusCode[, statusMessage][, headers])
다음과 같은 구성을 갖는데, 이제 정상적인 응답을 보내는 경우 statusCode에 200, 아닌 경우 404를 보낼수 있다.
headers에 Content-Type을 보낼수 있다.
'Content-Type': 'text/html'
위처럼 작성하면 html형식을 보낸다고 미리 알려줄수 있고,
'Content-Type': 'text/plain;
위처럼 작성하면 text형식을 보낸다고 알려줄수 있다.
'Content-Type': 'text/html; charset=utf-8'다음과 같이 charset을 주어 한글도 정상적으로 작동될 수 있게 만들수 있습니다.
fs.readFile
readFile을 사용하여 html파일을 가져왔다.
비동기로 실행을 하기 때문에 await을 사용하고 createServer을 async를 사용했다
또한 비동기 실행은 error catch가 필요하기 때문에 try catch문으로 작성했다.
res.end에 readFile의 변수를 담았다
const http = require('http')
const fs = require('fs').promises
const server = http.createServer(async (req, res) => {
try {
res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'})
const data = await fs.readFile('./server2.html')
res.end(data)
} catch (err) {
console.error(err)
res.writeHead(200, {'Content-Type': 'text/plain; charset=utf-8'})
res.end(err.message)
}
}).listen(8080)
server.on('listening', () => {
console.log('8080번 포트에서 서버 대기중입니다.')
})
server.on('error', (err) => {
console.log(err)
})
node server2.js로 실행하면 만들었던 html이 정상적으로 보입니다.

참고
- https://www.inflearn.com/course/%EB%85%B8%EB%93%9C-%EA%B5%90%EA%B3%BC%EC%84%9C/dashboard
- https://nodejs.org/ko/docs/guides/anatomy-of-an-http-transaction/
- https://www.w3schools.com/nodejs/met_server_listen.asp#gsc.tab=0
'백엔드 > node' 카테고리의 다른 글
| [Node.js/MongoDB] Html파일 전송하기 (0) | 2022.12.14 |
|---|---|
| [Node.js/MongoDB] nodemon (0) | 2022.12.14 |
| [Node.js/MongoDB] Express와 get으로 읽기 (0) | 2022.12.14 |
| [Node.js/MongoDB] Node.j란 (1) | 2022.12.14 |
| [Node] HTTP서버 만들기 (0) | 2022.11.27 |