-
노드 fs로 HTML 읽어 제공하기노드 2023. 4. 13. 11:26
전에 서버를 만들었을때 사용했던 코드를 가져와보면
//server1.js const http = require('http'); const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' }); res.write('<h1>Hello Node!</h1>'); res.end('<p>Hello Server!</p>'); }) .listen(8080); server.on('listening', () => { console.log('8080번 포트에서 서버 대기 중입니다.'); }); server.on('error', (error) => { console.error(error); });
간혹 브라우저가 응답부분을 HTML인지 문자열인지 구분을 못하는 경우가 있다.
이때 사람이 직접 알려줘야 한다.
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
이것을 그대로 쓰면 된다.
그런데 응답부분을 위와 같은 코드에 작성하면 응답을 많이 하고 싶은 경우, 또는 해야 되는 경우 코드 자체가 매우 더러워 질 수가 있다.
//server1.js const http = require('http'); const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' }); res.write('<h1>Hello Node!</h1>'); res.write('<h1>Hello Node!</h1>'); res.write('<h1>Hello Node!</h1>'); res.write('<h1>Hello Node!</h1>'); res.write('<h1>Hello Node!</h1>'); res.write('<h1>Hello Node!</h1>'); res.write('<h1>Hello Node!</h1>'); res.write('<h1>Hello Node!</h1>'); res.write('<h1>Hello Node!</h1>'); res.write('<h1>Hello Node!</h1>'); res.write('<h1>Hello Node!</h1>'); res.write('<h1>Hello Node!</h1>'); res.end('<p>Hello Server!</p>'); }) .listen(8080); server.on('listening', () => { console.log('8080번 포트에서 서버 대기 중입니다.'); }); server.on('error', (error) => { console.error(error); });
따라서 응답 부분은 별도의 html파일로 빼서 만들어 두고 그것을 읽어서 불러오는 방식을 사용하면 된다.
//server.html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Node.js 웹 서버</title> </head> <body> <h1>Node.js 웹 서버</h1> <p>만들 준비되셨나요?</p> </body> </html>
//server1.js 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 (error) { console.error(error); 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', (error) => { console.error(error); });
결과는 다음과 같다
*res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' }); 그냥 문자열이라는 것을 알려주는 부분이다.
'노드' 카테고리의 다른 글
노드 POST, PUT, DELETE 요청 보내기 (0) 2023.04.13 노드 REST API 서버 만들기 (1) 2023.04.13 노드 http 서버 만들기 (0) 2023.04.13 노드 에러 처리하기 (0) 2023.04.12 노드 스레드풀과 커스텀 이벤트 (0) 2023.04.12