오늘은 지난 시간에 배운 미들웨어와 라우터에 대해서 정리해보자!
미들웨어란 일종의 거쳐가는 함수라고 생각하면 된다.
좀 더 자세하게는 이름처럼 요청과 응답 중간에 위치한 함수이다!
미들웨어 함수는 요청 오브젝트인 req
, 응답 오브젝트인 res
, 그리고 애플리케이션의 요청-응답 주기 중 그 다음의 미들웨어 함수에 대한 엑세스 권한을 갖는 함수이다.
=> 클라이언트에게 요청이 오고 그 요청을 보내기 위해 응답하려는 중간에 목적에 맞게 처리를 하는, 거쳐가는 함수!
그렇다면 다음 미들웨어에 대한 엑세스는 어떻게 할까?
-next함수
를 이용해 다음 미들웨어로 현재의 요청을 넘길 수 있다.
-next
를 통해 미들웨어는 순차적으로 처리된다.
- next = 다음 미들웨어로 넘어가는 함수
Example
const express = require('express');
const app = express();
app.get('/', function(req, res)
{
res.send('첫 번째 미들웨어');
}, function(req,res){
res.send('두 번째 미들웨어');
});
app.listen(3000);
Example - next 사용
const express = require('express');
const app = express();
app.get('/', function(req, res, next){
console.log('hi');
next();
});
app.listen(3000);
app.use((err, req, res, next) => {
console.log(err);
res.status(500).send(err.message);
})
라우팅이란?
URI 또는 경로 및 특정한 HTTP 요청 메서드(GET, POST 등등)인 특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 것.
여기서 라우터는 클라이언트의 요청 경로를 보고 이 요청을 처리할 수 있는 곳으로 기능을 전달해주는 역할을 한다. 이렇게 라우터를 사용하면 라우팅을 깔끔하게 관리할 수 있다!
미들웨어 : 요청과 응답의 중간에 위치한 함수
라우터 : 특정 주소에 들어오는 요청을 처리
예시로 구분해보자
const express = require('express');
const app = express();
app.get('/', function(req, res){
res.send('hi');
});
app.listen(3000);
위의 예시에서 미들웨어는 요청과 응답 사이의 일부 함수만 해당한다고 하면 라우터는 '/'주소로 들어오는 요청을 처리하는 app.get
전체가 해당한다.