Backend session-2

SSO·2022년 5월 16일
0

LikeLion10th

목록 보기
12/16

오늘은 지난 시간에 배운 미들웨어와 라우터에 대해서 정리해보자!

미들웨어(Middleware)

미들웨어란 일종의 거쳐가는 함수라고 생각하면 된다.
좀 더 자세하게는 이름처럼 요청과 응답 중간에 위치한 함수이다!

미들웨어 함수는 요청 오브젝트인 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(미들웨어) : 모든 요청에서 미들웨어 실행 (주소와 상관없이)
  • app.use('/abc', 미들웨어) : abc로 시작하는 모든 요청에서 미들웨어 실행
  • app.post('/abc', 미들웨어) : abc로 시작하는 post 요청에서 미들웨어 실행

에러처리 미들웨어

  • 에러처리 시에는 반드시 매개변수가 4개
    - 모든 매개변수를 사용하는 게 아니어도!!!
  • 특별한 경우가 아니면 가장 아래에 위치
  • express가 기본적으로 에러처리를 해준다고는 한다.
app.use((err, req, res, next) => {
	console.log(err);
  	res.status(500).send(err.message);
})

라우터(Router)

라우팅이란?
URI 또는 경로 및 특정한 HTTP 요청 메서드(GET, POST 등등)인 특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 것.

여기서 라우터는 클라이언트의 요청 경로를 보고 이 요청을 처리할 수 있는 곳으로 기능을 전달해주는 역할을 한다. 이렇게 라우터를 사용하면 라우팅을 깔끔하게 관리할 수 있다!

미들웨어와 라우터의 차이는 무엇?

미들웨어 : 요청과 응답의 중간에 위치한 함수
라우터 : 특정 주소에 들어오는 요청을 처리

예시로 구분해보자

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

app.get('/', function(req, res){
	res.send('hi');
});

app.listen(3000);

위의 예시에서 미들웨어는 요청과 응답 사이의 일부 함수만 해당한다고 하면 라우터는 '/'주소로 들어오는 요청을 처리하는 app.get전체가 해당한다.

profile
Github_qkrthdus605

0개의 댓글