프로그래머스 데브코스 웹 풀사이클 2주차 4일차

geun·2023년 11월 23일
0

데브코스

목록 보기
8/79
post-thumbnail

백엔드 - 웹 서버의 역할

웹 서버는 정적 페이지에 대응하여, 동적 페이지에 대한 처리를 직접하지는 못하고, 웹 애플리케이션 서버를 통해 데이터베이스와 상호 작용한다.

백엔드 - 웹 어플리케이션 서버

동적 페이지 처리를 하는 서버로, 데이터 연산을 위해 데이터 베이스와 연결되어 있으며, CRUD역할을 수행한다.

Node.js란?

JavaScript가 스크립트 언어 이상의 역할을 수행할 수 있게 해주는 플랫폼으로, Node.js를 이용하면 자바스크립트로 백엔드 구현이 가능해진다.

Node.js로 웹 서버 만들기!

server.js

let http = require("http");

function onRequest(require, response) {
  response.writeHead(200, { "Content-Type": "text/html" });
  response.write("Hello Node.js");
  response.end();
}
http.createServer(onRequest).listen(8888);
//localhost:8888

require을 이용해 http 프로토콜을 가져와준다.
http의 createServer함수를 이용해 포트번호 8888로 서버를 만들어준다.
Head의 통신상태의 숫자는 다음과 같은 상태를 나타낸다.(HTTP Status Code)
200 : 정상
404 : Not Found
500 : 서버가 이상함.

server.js 모듈화 하기

index.js

let server = require("./server.js");
server.start();

server.js

let http = require("http");

function start() {
  function onRequest(require, response) {
    response.writeHead(200, { "Content-Type": "text/html" });
    response.write("Hello Node.js");
    response.end();
  }
  http.createServer(onRequest).listen(8888);
  //localhost:8888
}
exports.start = start;

다음과 같은 방식으로, index.js에서 server.js를 불러와 실행할 수 있다.

URL이란?

Uniform Resource Locator의 약자로, 웹 페이지의 주소를 나타낸다.

Server와 Router의 역할

Server : request와 response를 담당한다.
Router : requset의 URL에 따라서, route(경로)를 정해준다.

직접 해보자!

index.js

let server = require("./server.js");
let router = require("./router.js");
let requestHandler = require("./requestHandler.js");

server.start(router.route, requestHandler.handle);

router.js

function route(pathname, handle, response) {
  console.log("pathname : " + pathname);
  if (typeof handle[pathname] == "function") {
    handle[pathname](response);
  } else {
    response.writeHead(404, { "Content-Type": "text/html" });
    response.write("Error Page");
    response.end();
  }
}

exports.route = route;

server.js

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

function start(route, handle) {
  function onRequest(request, response) {
    let pathname = url.parse(request.url).pathname;
    route(pathname, handle, response);
  }
  http.createServer(onRequest).listen(8888);
  //localhost:8888
}
exports.start = start;

requestHandler.js

function main(response) {
  console.log("main");

  response.writeHead(200, { "Content-Type": "text/html" });
  response.write("Main Page");
  response.end();
}
function login(response) {
  console.log("login");

  response.writeHead(200, { "Content-Type": "text/html" });
  response.write("Login Page");
  response.end();
}

let handle = {};
handle["/"] = main;
handle["/login"] = login;

exports.handle = handle;

server.js에서의 reuquestHandler.js를 통해 경로가 입력되면 각 경로로 라우팅이 되고, 해당 경로가 존재하면, 해당 페이지로 이동을, 존재하지 않으면 404코드를 통한 에러 페이지로 이동한다.
메인페이지

로그인페이지

에러페이지

오늘의 소감

Node.js로 처음으로 백엔드쪽을 배워보았는데, 아직까지 너무나도 생소하다. 이번강의는 두번 세번 돌려가면서 다시 공부해야겠다는 생각이 절실히 났다.

0개의 댓글