카테고리 없음

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 파일을 읽어와서 전달해줌.

server2.html

 

8081 포트 완성 화면