2021_05_04

유지원·2021년 5월 4일
0
post-thumbnail

TIL - express란?

저번 시간에는 기본 내장 node.js 모듈인 http 모듈을 이용해서 서버를 구현했었는데 오늘은 새로운 프레임워크인 express를 이용하는 방법을 공부한다.!

1. express란?

express가 무엇인지 알아보기 위해 공식문서를 들어가보면 'Node.js를 위한 빠르고 개방적인 간결한 웹 프레임워크'라고 나와있다. 이게 무슨 뜻일까...??

쉽게 말하자면 Node.js 환경에서 API를 제작하기 위해 만들어진 프레임워크 중 하나 이다.

그렇다면 node.js에 기본적으로 http 모듈이 내장되어있음에도 불구하고 왜 새로운 프레임워크인 express를 사용하는 것일까? http 모듈과는 다른 큰 장점이 있기 때문이다!

1. 미들웨어를 붙이기 쉽다.
미들웨어란? 요청과 응답 사이클 중간에 목적에 맞게 원하는 동작을 처리 해주는 것을 말한다. 쉽게 말하자면, 요청이 들어오고 응답을 보내기 전에 미들웨어가 지정한 동작을 수행한다. 아래는 대표적으로 미들웨어가 사용되는 상황이다.

(1) logger
특정 endpoint가 아닌 모든 요청에 대하여 미들웨어를 붙일 수 있다.

const express = require('express');
const app = express();
const myLogger = function (req, res, next) { //미들 웨어 함수 정의
  console.log(`http request method is ${req.method}, url ${req.url}`);
  next(); //앱 내의 그 다음 미들웨어 함수가 호출된다.
};
//app.use를 이용해서 미들웨어 함수를 로드한다. 앱이 요청을 수신할 때마다 실행한다.
app.use(myLogger);
app.get('/', function (req, res) { //method가 'get'이고 url이 '/'일 때
  res.send('Hello World!');
});
app.listen(3000);

미들웨어 함수 myLogger는 console을 출력한 후 next()를 이용해서 다음 미들웨어 함수를 호출한다. 이 과정을 보면 알겠지만, 미들웨어 함수의 로드 순서는 함수가 작성된 순서에 따른다.

(2) body-parser
요청의 본문을 해석해주는 미들웨어.
payload를 받을 때 Buffer를 조합해서 body를 얻어내지 않고 보다 간단하게 작성할 수 있다.

const bodyParser = require('body-parser') //body-parser 모듈을 불러온다.
const jsonParser = bodyParser.json()
app.use(jsonParser);
app.post('/api/users', function (request, response) {
  // request.body에는 JSON의 형태로 payload가 담겨져 있다.
})

(3) cors
CORS 헤더를 붙일 때 writeHead 메소드를 이용하여 Access-control-Allow 헤더를 일일이 정의하지 않고 보다 간단하게 작성할 수 있다.

const cors = require('cors') //cors 모듈을 불러온다.
app.use(cors()) // 모든 요청에 대해 CORS 허용한다.

2. 자체 라우터를 제공한다.
라우팅이란 method, url을 기준으로 조건에 따라 분기한 것을 말한다.
express에서는 app.method(path, handler)를 통해 라우터를 정의한다.

app은 express의 인스턴스이고 method는 http 요청 메서드로 대표적으로 GET, POST, PUT, PATCH, DELETE 등이 있다
PATH는 서버의 경로이고 HANDLER는 서버에서 받아온 정보를 처리하는 함수가 들어가는 부분이다.

app.get('/messages', (request, response) =>{ //method가 'get'이고 URL이 'messages'일 때
    response.status(200).json(allMessages)
}) 
app.post('/messages', function(request, response) {//method가 'post'이고 URL이 'messages'일 때
    ~~~~~~
    ~~~
})




이번시간에는 express에 대하여 공부하였다.
다음시간에는 React가 무엇인지에 대하여 공부한다.
오늘은 여기까지~!~~~!~

profile
안녕하세요 유지원입니다

0개의 댓글