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로 서버 만들기 책을 참고해서 작성한 글입니다.
'IT > Node.js' 카테고리의 다른 글
[Node.js] CRUD 만들어 보기 (0) | 2023.02.14 |
---|---|
[Node.js] __dirname이 뭘까? (0) | 2023.02.14 |
[Node.js] http 모듈은 뭐고, req와 res는 또 뭘까? @@ (0) | 2023.02.09 |
[Node.js] 모듈이 뭘까? - 레고로 설명하는 모듈 개념 (0) | 2023.02.09 |
[Node.js] Node.js가 도대체 뭘까? (0) | 2023.02.08 |