카테고리 없음
0726 Node http활용 서버 구현
hyerin1201
2023. 7. 26. 18:34
http활용 서버 구현해보기
노드에서 서버를 구현하기 위해서는 http 프로토콜의 역할을 할 수 있는 http 모듈을 불러와야 한다.
http모듈 createServer( ) 함수가 실제 서버를 구현시킬 수 있도록 하는 역할을 한다.
createServer( (req, res) => { } )
req: 클라이언트가 요청하는 값
res: 응답하는 값
.listen( ) 함수 : 정상적으로 작동했다면 다음과 같은 함수 실행.
writeHead : 서버가 응답했을때 응답한 값을 요약하여 정의해주는 공간을 만들어줌
writeHead( ( 200, { "Content-Type" : "text/html ; charset=utf8" } )
200: 정상적으로 응답했을때
400: 정상적으로 응답하지 못했을때
const http = require("http");
http
.createServer((req, res) => {
res.writeHead(200, { "Content-Type": "text/html; charset=uth8" });
res.write("<h1>Hello Node!</h1>");
res.end("<p>Hello Server!</p>");
})
.listen(8080, () => {
console.log("8080번 포트에서 서버 대기 중입니다.");
});
const http = require("http");
const server = http.createServer((req, res) => {
res.writeHead(200, { "Content-Type": "text/html; charset=uth8" });
res.write("<h1>Hello Node!</h1>");
res.end("<p>Hello front!</p>");
});
server.listen(8080);
server.on("listening", () => {
console.log("8080번 포트에서 서버 대기 중입니다.");
});
server.on("error", (error) => {
console.log(error);
});
변수에 담아서 코드를 작성할 수도 있다.
* 서버에서 데이터를 전송할 때 http상태 코드
- 2xx : 데이터 전송이 성공적으로 이루어졌을때
(*200:성공 / 201: 추가된 내용이 있을 때)
-3xx : 리다이렉션(ex: A페이지로 이동하기를 원했는데 B페이지로 갔을때)을 알려줄때
-4xx : 클라이언트가 서버에 데이터를 요청했을때 데이터 요청 자체에 오류가 생겼을때.
-5xx : 서버 자체에 오류가 발생했을때, (해킹, 과부하, 트래픽초과)
(*503 : )
서버 응용
별도의html을 만들어서 서버가 응답할때 html데이터를 뿌린다.
const http = require("http");
const fs = require("fs").promises;
http
.createServer(async (req, res) => {
try {
const data = await fs.readFile("./server2.html");
res.writeHead(200, { "Content-Type": "text/html; charset=utf08" });
res.end(data);
} catch (err) {
console.error(err);
res.writeHead(500, { "Content-Type": "text/plain; charset=utf08" });
}
})
.listen(8081, () => {
console.log("8081번 포트에서 서버 대기중입니다.");
});
server2.html 파일을 읽어와서 전달해줌.