Express 개론

HS K·2022년 10월 19일
0

[학습목표]
1. Express가 무엇인지 알 수 있다.
2. 요청과 응답에 대한 원리를 이해할 수 있다.


Express
자체적인 최소한의 기능을 갖춘 라우팅 및 미들웨어 웹 프레임워크

Express-application
기본적으로 일련의 미들웨어 함수 호출이다.


미들웨어 함수

요청 오브젝트(req), 응답 오브젝트 (res), 그리고 애플리케이션의 요청-응답 주기 중 그 다음의 미들웨어 함수에 대한 액세스 권한을 갖는 함수이다.

그 다음의 미들웨어 함수는 일반적으로 next라는 이름의 변수로 표시된다.

역할

  • 모든 코드를 실행
  • 요청 및 응답 오브젝트에 대한 변경을 실행
  • 요청-응답 주기를 종료
  • 스택 내의 그 다음 미들웨어 함수를 호출

현재의 미들웨어 함수가 요청-응답 주기를 종료하지 않는 경우에는 next()를 호출하여 그 다음 미들웨어 함수에 제어를 전달해야한다. 그렇지 않으면 해당 요청은 정지된 채로 방치된다.

  예를 들어서 요청-응답 도중에 시간을 콘솔 창에 남기고 싶다면 미들웨어 함수를 중간에 넣어서 표시를 한 뒤, 계속해서 다음 미들웨어들을 처리할 수 있도록 하는 것이다. 다음 미들웨어 함수에 대한 엑세스는 next 함수를 이용해서 다음 미들웨어로 현재 요청을 넘길 수 있다.
next라는 말에서 알 수 있듯이 next를 통해 미들웨어는 순차적으로 처리된다. (따라서 순서가 중요하다)



※ 호출에 대해서

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

var myLogger = function (req, res, next) {
  console.log('LOGGED');
  next();
};

app.use(myLogger);

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

app.listen(3000);

위의 코드는 클라이언트가 루트 경로(ex. http:/localhost:3000/)로 요청을 보냈을 때, myLogger를 먼저 거치고 myLogger는 다음 미들웨어 호출(next())함수를 지정하여 res.send("Hello World"); 코드가 담긴 미들웨어로 넘어가게 된다는 의미이다.


※ res, req 객체 변경 가능

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

var requestTime = function (req, res, next) {
  req.requestTime = Date.now();
  next();
};

app.use(requestTime);

app.get('/', function (req, res) {
  var responseText = 'Hello World!';
  responseText += 'Requested at: ' + req.requestTime + '';
  res.send(responseText);
});

app.listen(3000);

requestTime 미들웨어는 req 객체 안에 requestTime라는 프로퍼티를 만들었고 다음 미들웨어에서 프로퍼티 값을 가져올 수 있다.

요청-응답 주기를 종료(res methods)한다는 의미는 앞서 배웠던 response의 method를 이용하여 클라이언트에게 응답을 전송한다는 의미이다. (응답 전송시 종료)

위의 코드는 res.send(responseText);가 주기를 종료한다는 의미이다.


미들웨어 함수 호출의 요소


미들웨어 예시

app.use 안에 있는 모든 함수들은 모두 미들웨어이며 요청이 올때마다 이 미들웨어를 거치며 클라이언트에게 응답하게 된다.
cf) 이 미들웨어들은 페이지를 렌더링할 때 사용자 인증을 앞서 거친 후에 렌더링하고 싶을 때, 사용자 인증 미들웨어를 작성하고 앞에 삽입하게 되면 편리하다.


Express-application의 유형

  • 애플리케이션 레벨 미들웨어
  • 라우터 레벨 미들웨어
  • 오류 처리 미들웨어
  • 기본 제공 미들웨어
  • 써드파티 미들웨어

※ 자세한 설명은 링크참조


[출처]

https://expressjs.com/ko/guide/using-middleware.html

https://psyhm.tistory.com/8

profile
주의사항 : 최대한 정확하게 작성하려고 하지만, 틀릴내용이 있을 수도 있으니 유의!

0개의 댓글