[TIL][Express] express 서버 구현

김태수·2020년 11월 17일
0

Node.js

목록 보기
2/2

express 프레임워크를 이용한 서버 구현!

아직 node.js의 http모듈 만으로 서버를 구축하는것이 익숙치 않았으나, 코드스테이츠 페어의 독촉(응원) 으로, 그리고 공식 문서와 레퍼런스 코드를 참고하며 express 서버를 처음으로 구축하였다! express를 맛보니 node.js로 서버를 만드는것보다 훨씬 수월했고, 덩달아 node.js 서버구축도 이해되기 시작했다. 만약 node.js 서버구축 개념을 숙지하는데 어려움을 겪는다면 express도 한번 경험 해 보는것도 좋을것같다!


express 라우팅

express는 자체적으로 라우팅 기능을 지원하여, node.js 만으로 서버를 작성할 때 보다, 상당히 직관적이고 간략하게 코드를 줄일 수 있다!

app.METHOD(PATH, HANDLER)

app 은 express의 인스턴스 이며, GET, POST 등의 메소드를 붙여주는것 만으로도 request와 response를 핸들러 함수를 통하여 핸들링 할 수 있다.

//--------------------- 기존 node.js 방식
const requestHandler = (req, res) => {
  if(req.url === '/messages') {
    if (req.method === 'GET') {
      res.end(messages)
    } else if (req.method === 'POST') {
      req.on('data', (req, res) => {
        // do something ...
      })
    }
  }
}

//----------------------- express 방식
const router = express.Router()

router.get('/messages', (req, res) =>{
  res.send(messages)
})

router.post('/messages', (req, res) =>{
  // do something
})

Middleware

미들웨어는 express에서 제공하는 강력한 기능이다. 추가적인 메소드를 통해 데이터를 간결하고 쉽게 처리할 수 있으며, 이러한 미들웨어는 npm을 통해 install 가능하고, 필요에 따라 직접 작성하여 사용할 수 있다!

대표적으로 CORS를 처리 가능한 cors 미들웨어가 있다.
https://github.com/expressjs/cors

Chatterbox 서버 구현

해당 지식들을 활용하여 간단하게 req 메세지를 저장하고 res로 메세지를 뿌려주는 서버를 구현하였다.

const express = require('express');
const bodyParser = require('body-parser'); //--- 해당 미들웨어로 쉽게 JSON.parse()를 할 수 있다.
const cors = require('cors'); //--- express에 기본적으로 포함되어 있지 않으며 npm을 통해 install 해야한다.
const app = express();
const jsonParser = bodyParser.json();


const port = 5000;
const ip = "127.0.0.1";

let messages = {results:[{
    "username": "CodingGod",
    "roomname": "01",
    "text": "안녕하세요"
}]};

/*
let corsOption = {
    origin: '*',
    allowdHeader: ['Content-Type']
}
*/     //---- CORS 옵션을 수정하여 cors()의 인자로 사용해 각각 요청에 대해 개별 대응할
       //---- 수 있으나 여기에서는 아래와 같이 전체적으로 처리해 주었다.
app.use(cors());

app.get('/messages', (req, res) => {
    res.json(messages);
});

app.post('/messages', jsonParser, (req, res) => {
    messages.results.push(req.body);
    console.log(`잘 보내졌단다`);
})

app.get('*', (req, res) => {
    res.status(404).send('페이지를 찾을 수 없단다');
});

app.use(function (req, res, err) {
    err.status(500).send('서버가 터졌단다');
});

app.listen(port);
console.log(`서버가 ${port}포트로 시작됐단다?`);
// 구수하게 한글로 작성된 로그

그러나 express의 경우 에러 핸들링이 아직 와닿지 않는데, 이 부분에 대해서는 더 공부해 봐야 겠다! 구동상의 이상은 없지만 위의 에러 처리에 대해 확신이 없으니 아시는분 있으면 꼭 알려주세요...

profile
개발학습 일기

0개의 댓글