서버 기본 틀 만들기

아주 단순하지만, 서버로써 전혀 쓸모없는 틀만 만들어보기

const http = require("http");

const host = "localhost";
const port = 3000;

const server = http.createServer((req, res) => {
  res.writeHead(200, { "Content-Type": "text/html" });
  res.end("<h1>Hello world</h1>");
});

server.listen(port, host, () => {
  console.log("Server listen on <http://localhost:3000>");
});

라우팅을 추가해보기

아주 단순하게, 그저 조건문으로 분기처리하는 방식의 엔드포인트 생성하기

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

const host = "localhost";
const port = 3000;

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

  switch (path) {
    case "/":
      res.writeHead(200, { "Content-Type": "text/html" });
      res.end("<h1>Home page</h1>");
      break;
    case "/post":
      res.writeHead(200, { "Content-Type": "text/html" });
      res.end("<h1>Post page</h1>");
      break;
    case "/user":
      res.writeHead(200, { "Content-Type": "text/html" });
      res.end("<h1>User page</h1>");
      break;
    default:
      res.writeHead(404, { "Content-Type": "text/html" });
      res.end("<h1>Not Found</h1>");
  }
});

server.listen(port, host, () => {
  console.log("Server listen on <http://localhost:3000>");
});

위 예시는 엔드포인트가 겨우 3개이지만,

모든 엔드포인트를 switch 문 내에 넣어두어야 하고, 가독성 또한 떨어짐

즉, 위의 방식은 매우 비효율적