본문 바로가기
프로그래밍/Backend

[Backend] Nodejs Express로 웹 서버 만들기

by 개발 까마귀 2021. 2. 7.
반응형

Nodejs Express로 웹 서버 만들기

 

안녕하세요. 개발 까마귀입니다. 저번에 프레임워크 없이 웹서버를 만들어봤죠?

하지만 그런 코드로는 조금만 큰 프로젝트여도 코드가 분리가 안되고 에러가 나도 찾기가 힘듭니다. 

그래서 프레임워크인 Express로 써서 더 간단하고 더 편리하게 웹서버를 만들어보죠

 

Express의 인기

express의 인기

Express의 인기가 엄청납니다. 가볍고 쉽고 빠르기 때문이죠 개발자는 express를 이용해서 블럭을 쌓아 하나의 성을 만드는 개념입니다. 그 말은 즉슨 밑바닥부터 설계를 해서 개발을 해야 한다는 거죠 이게 처음 초심 개발자한테는 머리가 멍합니다. 설계를 잘 못하면 갈아엎어야 하는 상황까지 올 수 있으니깐요. 그러니 패턴과 설계는 개발자가 다 해야 합니다. express는 개발할 때 필요한 API만 주고 개발자는 그걸로 성을 쌓아야 합니다. 

Express 시작하기

이제 express를 이용해서 개발을 시작해보죠

우선 저번처럼 폴더를 만들고 express를 설치를 합니다. 설치를 하기전 npm init 하세요!

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

app.listen(8080, function() {
    console.log("8080 server start");
})

설치했던 express를 부르고 그 express를 app이라는 변수에 담아서 8080 서버를 만듭니다. 

하지만 여기서 끝이 아니죠 저번에 얘기 드렸던거 처럼 저희는 지금 응답하는 코드를 안 짰기 때문에 지금 서버를 실행을 시켜도 응답이 없어 404가 뜰 겁니다. 

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

app.get('/', function(req, res) {
    res.send("Hello Express");
})

app.listen(8080, function() {
    console.log("8080 server start");
})

응답하는 코드를 작성 후 터미널 창에 "node index.js"를 치고 실행을합니다.

 

정말 간단하죠? 저번에는 서버 생성 코드 안에 라우팅 코드까지 작성을 해서 서버를 실행을 시켰습니다. 하지만 지금은 라우팅 코드와 서버 생성 코드가 완전히 분리된걸을 볼 수 있습니다. 근데 저번과 다른 게 있습니다. 저번에는 writeHead라는 걸 이용하여 Content-Type과 status를 설정을 했습니다. 하지만 위 코드는 전혀 그런 게 없습니다. 한번 F12를 눌러 확인을 해보죠!

 

어? 따로 설정을 안 했지만 이렇게 status와 Content-Type이 잘 설정이 되어서 날아갔습니다. 이것 또한 express가 보낼 때 설정을 알아서 해준 겁니다. status 304는 신경 쓰지 마세요. 지금 상황에서는 200이나 다름없습니다. 하지만 저희가 Content-Type과 status를 지정해서 보내고 싶을 때가 있습니다.

app.get('/', function(req, res) {
    res.set("Content-Type", "text/plain")
    res.status(200).send("Hello Express");
})

set으로 Content-Type을 지정해주고 send를 보낼 때 status를 200으로 보내주면 됩니다. 이런 식으로 코드를 짜면 프로젝트를 하더라도 분리가 되고 에러가 나도 찾기가 쉽습니다. 하지만 파일과 폴더마다의 역할이 또 필요합니다. 여기서 더 분리를 해야 한다는 거죠 그렇기 때문에 저희는 MVC패턴이라는 걸 사용합니다. Model, View, Controller이라는 약자를 따서 MVC패턴이라고 하는데 express로 아주 쉽게 만들 수 있습니다.

 

이번에는 간단하게 express 서버를 만들었습니다. express를 가볍고 빠른 프레임워크여서 많이 쓰이는데 규모가 큰 프로젝트에서는 조금 애를 먹습니다. 아무래도 밑바닥부터 설계를 해서 만들어야 하고 규칙과 패턴을 다 개발자가 스스로 해야 한다는 거 자체가 조금은 부담스우니깐요. 그래서 요즘 뜨는 게 nest.js입니다. nest.js는 자바의 Spring과 많이 비슷한데요. nest.js는 expres와 달리 "성" 자체를 줍니다. express는 벽돌을 쌓아서 성을 만들지만 nest.js는 아예 성 자체를 줍니다. 그래서 단점이 무겁다는 게 단점이지만 큰 프로젝트에서 express를 사용해도 어차피 모듈이 쌓여 무거워지기 마련입니다. 한국에서도 11번가나 다른 회사에서도 express와 nest.js를 사용 경험이 있는 개발자를 찾습니다. 제 생각으로는 express는 프록제트의 로직이 복잡하지 않고 규모가 작은 프록제트에서 어울리고 nest.js는 로직이 복잡하고 규모가 큰 프로젝트에서 큰 힘을 발휘합니다. 다음에는 한번 nest.js로 웹서버를 한번 만들어보죠

 

감사합니다.

반응형

'프로그래밍 > Backend' 카테고리의 다른 글

[Backend] Nodejs ejs 적용  (0) 2021.03.29
[Backend] express routing 원리  (0) 2021.03.14
[Backend] Nodejs MVC 패턴  (0) 2021.02.14
[Backend] Nodejs 웹 서버 만들기  (2) 2021.01.31
[Backend] Nodejs란?  (0) 2021.01.31

댓글