2021년 8월 5일에 작성된 문서 5번 입니다.
node.js의 배운 내용을 정리했습니다.
미들웨어 함수는 다음과 같은 태스크를 수행할 수 있습니다.
- 모든 코드를 실행.
- 요청 및 응답 오브젝트에 대한 변경을 실행.
- 요청-응답 주기를 종료.
- 스택 내의 그 다음 미들웨어를 호출.
var express = require('express');
var app = express();
app.get('/', function (req, res) {
//이 애플리케이션을 위해 두 개의 미들웨어 함수를 정의 => res, req
//콜백은 없음.
res.send('Hello World!');
});
app.listen(3000);
// 이 함수는 앱에 대한 요청이 해당 함수를 거쳐 전달될 때
// 단순히 “LOGGED”를 인쇄.
// 이 미들웨어 함수는 `myLogger`라는 이름의 변수에 지정됨.
var myLogger = function (req, res, next) {
console.log('LOGGED');
next();
};
app.use()
를 호출// 루트 경로(/)로 라우팅하기 전에 `myLogger` 미들웨어 함수를 로드
var express = require('express');
var app = express();
var myLogger = function (req, res, next) {
//미들웨어 함수 `myLogger`는 단순히 메시지를 인쇄한 후
//`next()` 함수를 호출하여 스택 내의 그 다음 미들웨어 함수에 요청을 전달.
console.log('LOGGED');
next();
};
app.use(myLogger);
app.get('/', function (req, res) {
// 앱이 요청을 수신할 때마다, 앱은 “LOGGED”라는 메시지를 터미널에 인쇄
res.send('Hello World!');
});
app.listen(3000);
/*
* 미들웨어의 로드 순서는 중요, 먼저 로드되는 미들웨어 함수가 먼저 실행
* 루트 경로에 대한 라우팅 후, `myLogger`가 로드되면, 루트 경로의 라우트 핸들러가 요청-응답 주기를 종료해 요청은 절대로 `myLogger`에 도달하지 못하며, 앱은 “LOGGED”를 인쇄하지 않음.
*/
requestTime
라는 특성을 요청 오브젝트에 추가var requestTime = function (req, res, next) {
req.requestTime = Date.now();
next();
};
requestTime
미들웨어 함수를 사용. 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);
Written with StackEdit.