백엔드의 구조

데브코스

목록 보기
8/131

웹 서버의 역할

웹 서버 : 정적 페이지에 대해 대응합니다. 동적페이지에 대한 처리는 직접 처리하지 않고, 웹 어플리케이션 서버에게 전달합니다.

정적 페이지란 : 화면의 내용/데이터 등의 변동이 없는 페이지를 말하고(데이터베이스란 소통도 안해! 그냥 만들어두면 끝!)
동적 페이지란 : 데이터 처리/연산을 통해 화면의 내용, 데이터가 변하는 페이지를 말합니다.


Node.js란

자바스크립트를 스크립트 언어 이상으로 프로그래밍 언어 역할을 할 수 있도록 지원하는 플랫폼입니다.
즉, 우리는 Node.js를 이용해서 자바스크립트로 백엔드를 구현할 수 있습니다.

자 이제 서버를 만들어 볼 건데, 구글에 node.js쳐서 나오는 사이트에서 node.js를 다운로드 받고

vscode 들어와서 server.js파일을 하나 만들어둬.
그럼 거기에서

let http = require('http'); 

를 치는데 이게 무슨 말이냐면, require이라는 함수가 소괄호 안에 오는 모듈을 가져다 줘서 쓸 수 있게 해줘.
지금은 http니까 http의 모듈을 가져올 수 있어.

서버 만들기 server.js

let http = require("http");

function onRequest(request, response) {
  response.writeHead(200, { "Content-Type": "text/html" });
  response.write("Hello Node.js");
  response.end();
}

http.createServer(onRequest).listen(8888);
// localhost:8888

이렇게 하면 일단 서버가 만들어진 것이고,
이걸 터미널에서 서버 전원을 켜주면 되는데 어떻게 키냐면,
터미널에서
node server.js
node 하고 서버 파일명 을 입력해주면 된다.

자 이제 서버도 켜졌으니 어떻게 이 코드가 구동이 되는지 설명해볼게.


http.createServer(onRequest).listen(8888) 이 코드는
http에서 createServer로 서버를 만들었는데, (onRequest) 라는 함수로 우리는 통신을 할꺼야! 라고 하는 것이고,
listen(8888) : 8888이라는 주소에서 서버 통신을 들어라~ 라는 말이야.

이 8888은 포트 번호라고 해.
port number : 클라이언트와 서버가 대화를 하고 싶다면, 같은 주파수를 맞춰야만 해요. 마치 무전기처럼.

HTTP 프로토콜 템플릿

그럼 HEAD에는 뭘 담는데?

HEAD에는
1. 통신 상태가 어떤지 알려주기!
- 200: 정상이다
- 404 : 클라이언트가 원하는 걸 못 찾겠다.
- 500 : 서버가 이상하다

우리는 이 숫자들을 HTTP(status) code라고 부릅니다.

  1. 응답이 어떤 형태인지 적어줘요. 예를 들어 html이다.

자 그럼 다시 돌아가서 보면

function onRequest(request, response) {
  response.writeHead(200, { "Content-Type": "text/html" });
  response.write("Hello Node.js");
  response.end();
}

웹서버가 클라이언트한테 응답을 해줄때,
response.writeHead 응답할때, head를 적을거래, 어떻게?
200 코드 = 정상이다.
내가 너한테 줄 타입은 text/html이다.
화면에 뿌려질 데이터는 hello, node.js 이다.
그리고 end는 응답 끝냈어~ 라는 뜻이다.


하지만 이렇게 적으면 서버의 유연성이 적을 수 있다.
유연성이 뭐냐면, 이 코드상에서 우리가 서버를 활용할 수 있는 방법이 적어 보일 수 있다.

그래서 우리 서버도 모듈처럼 만들어보기로 한다.
(NODE.JS 모듈처럼 우리 서버도 모듈처럼 만들어 보기 - 왜냐면 다른 코드나 다른 자바스크립트 코드에서도 서버를 모듈처럼 쓰기 위해서)

만약에 내가 a.js에서 만든 함수를 b.js에서도 사용하고 싶으면

exports.[내가 b.js에서 사용하고싶은 이름] = [a.js에서 만든 함수];
를 하면 된다.
예를 들어 a.js에 apple이라는 함수를 만들어서 이 함수를 apple이란 이름 그대로 b.js에서 쓰고 싶으면

exports.apple = apple; 하면 되고,
b.js에서는 사과라는 이름으로 함수를 사용하고 싶으면
exports.사과 = apple; 이렇게 하면 된다;

profile
Dive Head First | Work Super Hard | Attract Great People

0개의 댓글