IT/Node.js

[Node.js] express가 뭘까?

Buang 2023. 2. 10. 23:01
반응형

 

express가 뭘까?

 

express는 서버를 구현할 수 있게 해주는 프레임워크다.

 

서버를 구현한다는 건 뭐고, 프레임워크는 또 무슨 소리일까?

 

일단 서버를 구현한다는 건

사용자가 naver.com이란 주소를 입력했을 때

naver 사이트 화면이 보여질 수 있도록 만들어 주는 걸

서버를 구현했다고 할 수 있다.

 

 

주소창에 아무거나 막 입력해보자.

가령 afsjdfiofwea.dsafad 이런 식으로.

결과로 어떤 화려한 사이트가 뜨진 않는다. 검색 결과가 없다고 한다.

 

우리가 naver.com을 입력했을 때

naver 사이트를 볼 수 있는 건

naver란 회사에서 서버를 구현해서 naver 사이트를 제작한 다음

사람들이 naver.com을 주소창에 입력했을 때

naver 회사에서 제작한 naver 사이트가 노출될 수 있도록

만들었기에 가능한 것이다.

 

태초부터 그냥 컴퓨터에 naver.com을 입력하면

naver 웹 사이트 등장! 이랬던 게 아니다.

 

express를 이용하면 서버를 구현할 수 있다고 했다.

이 말은 즉 사람들이 컴퓨터를 통해 내가 만든 사이트 주소를 입력하면

그 사이트에 들어갈 수 있도록 만든 거라고 이해해도 무방하다. @@

 

가령 내가 의류 쇼핑몰 사이트 MOAMOA를 만들고,

그 사이트는 주소창에 moamoa.com을 입력하면 들어갈 수 있게 만들었다.

이렇게 특정한 주소를 입력했을 때

내가 원하는 웹페이지(쇼핑몰 사이트)를 보여줄 수 있도록 만든 걸

서버를 구현했다고 한다.

 

생소한 개념이라 지금 바로 이해가 안 갈 수 있다.

이건 아래에서 예시를 추가로 작성할 예정이니

지금 당장 이해가 안 가도 걱정할 필요없다.

 

 

express는 서버를 구현할 수 있게 해주는 프레임워크다.

 

그럼 이제 프레임워크로 넘어와서

프레임워크는 뭘까?

 

프레임워크는 소프트웨어의 구체적인 부분에 해당하는

설계 부분을 재사용이 가능하게 제공한 것이다.

 

마치 밀키트와 같다.

샤브샤브를 먹고 싶은 데 샤브샤브에 들어가는 재료 사는 게

너무 번거롭다. 이때 내가 샤브샤브 밀키트를 사기만 하면

번거롭게 재료 하나하나를 살 필요없이 

샤브샤브를 금방 만들 수 있는 것처럼

 

프레임워크도 마찬가지로 다른 사람이 만들어 놓은 밀키트 같은 거다.

 

express의 경우 서버를 보다 쉽게 구현할 수 있도록 해 준 밀키트다. @@

 

우리가 서버 만들 때 express란 걸 사용하면

더 쉽고, 간편하게 만들 수 있구나~ 정도로 받아들이면 된다.

 

 

사실 express 말고 http로도 만들 수 있지

 

서버를 만들어 주는 걸로는 express 모듈 말고,

http 모듈도 있었다. 

 

const http = require('http');
 
http.createServer((req, res) => {
  res.write('<h1> HTTP Module</h1>');
  res.end('The http module handles requests from web browsers..');
})
 
  .listen(8080);

 

위의 코드는 http 모듈을 이용해서 서버를 만든 것이다.

서버를 만든다는 의미를 위에서 특정 주소를 입력했을 때

내가 원하는 웹페이지를 보여주는 것이라고 했었다.

 

여기선 localhost:8080이라고 주소창에 입력하면

 

HTTP Module 

The http module handles requests from web browersers. 

 

이런 영어가 뜨도록 만든 것이다.

 

실제로 localhost:8080이라고 주소창에 입력하면

HTTP Module ~~~ 이란 글이 보이는 걸 확인할 수 있다.

 

내가 localhost:8080이라고 주소창에 입력하면

위와같이 글씨가 뜨도록 의도해서 만든 것이다.

 

이렇게 주소를 입력했을 때

내가 원하는 웹 페이지 보여주는 걸 서버를 구현했다고 할 수 있다.

 

이 http 모듈보다 더 코드를 간결하게 작성해서

서버를 구현할 수 있게 해주는 게 express 모듈이다.

 

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('안녕 세상아!!!!!');
});

app.listen(8080);

 

http 모듈에선 res.write(응답 보냄)와

res.end(응답 종료)를 작성해서 문자열을 전달했다.

 

http 모듈을 잘 모른다면 이 글을 참고해 주세요!

 

하지만 express는 send() 메서드만 사용하면 res.write와 end를 사용한 효과가 있다.

즉 send() 메서드가 응답을 보내고 , 종료까지 하는 것이다.

 

이것만 봐도 http 모듈보다 express 모듈이

코드를 더 간결하게 만들 수 있음이 보인다.

 

 

/ (슬래시)의 의미

app.get('/', (req, res) => {
  res.send('안녕 세상아!!!!!');
});

app.listen(8080);

 

app.get 뒤에 '/' (슬래시)가 보인다.

이 슬래시는 localhost:8080/를 의미한다.

 

만약 app.listen(8080);에서

app.listien(3000);으로 포트번호를 8080에서 3000으로 바꿨다면

/(슬래시)는 localhost:3000/ 을 의미하게 된다.

 

localhost:[포트번호]/ 

 

이렇게 길게 쓰기 불편하니 /(슬래시) 하나 딱 써주면

localhost:[포트번호]/ 써준 거랑 같다고 약속해 준 거다.@@

 

 

GET 메서드

 

app.get('/', (req, res) => {
  res.send('안녕 세상아!!!!!');
});

 

app. 뒤에 get이란 단어가 보인다.

get은 '얻다'란 뜻이 있다. 

여기선 '사용자의 요청을 얻다, 받아들였다.'란 뜻으로 해석할 수 있다. 

 

사용자의 요청이라 함은

내가 주소창에 네이버 주소를 치는 건

네이버 페이지 좀 보여줘!란 요청이라 할 수 있다.

 

즉 사용자가 주소창에 주소를 치는 것은 하나의 요청이다.

 

app.get('/', (req, res) => {
  res.send('안녕 세상아!!!!!');
});

app.listen(8080);

 

위의 코드의 경우 /(슬래시), 그러니까

localhost:8080을 사용자가 주소창에 입력하는

요청의 행위를 받으면(get)

'안녕 세상아!!!!!!'를 보여줘란 뜻이된다.

 

localhost:8080을 주소창에 입력하니

'안녕 세상아!!!!'가 보이는 걸 확인할 수 있다.

 

 

send() 함수

 

 res.send('안녕 세상아!!!!!');

res.send는  요청이 들어왔을 때 응답을 해주는 기능을 가지고 있다.

여기선 사용자가 localhost:8080을 입력하는 요청 행위를 하면

응답으로 '안녕 세상아!!!!'를 보내줘!가 된다.

 

 

 

 

 

 

 

Node.js로 서버 만들기 책을 참고해서 작성한 글입니다.

반응형