본문 바로가기
Archive

[20] node의 http모듈을 사용해서 서버 만들어보기

by livemehere 2022. 4. 3.

기본골격

const http = require("http");

const server = http.createServer((req, res) => {
  console.log("incoming...");
  console.log(req.headers);
  console.log(req.httpVersion);
  console.log(req.method);
  console.log(req.url);
  res.write("welcome!");
  res.end();
});

server.listen(8080);

html 파일을 읽어서 전송

const http = require("http");
const fs = require("fs");

const server = http.createServer((req, res) => {
  const url = req.url;

  if (url === "/") {
    const buff = fs.readFileSync("./index.html");
    res.write(buff);
  }
  res.end();
});

server.listen(8080);

header 설정해보기

if (url === "/") {
  const buff = fs.readFileSync("./index.html");
  res.setHeader("Content-Type", "text/html");
  res.write(buff);
}

header를 명시할 경우 chrome에서 Resopnse header에 추가된 것을 확인해 볼 수있다

stream을 이용해서 전달해보기

res.end()는 제거해주어야합니다. stream은 동기적으로 처리되는 것이 아니기 때문에, end를 작성한다면, stream으로 완전히 전달되기 전에 end가 호출되면서 응답을 수행을 제대로 하지 못합니다.

const http = require("http");
const fs = require("fs");

const server = http.createServer((req, res) => {
  const url = req.url;

  res.setHeader("Content-Type", "text/html");
  if (url === "/") {
    fs.createReadStream("./html/index.html").pipe(res);
  } else {
    fs.createReadStream("./html/not-found.html").pipe(res);
  }
});

server.listen(8080);
반응형

'Archive' 카테고리의 다른 글

[22] Restful API 에 대해서  (0) 2022.04.03
[21] JSON 통신  (0) 2022.04.03
[19] Header  (0) 2022.04.03
[18] Request  (0) 2022.04.03
[17] status code  (0) 2022.04.03