Node.js TIL 05

Nabang Kim·2021년 8월 6일
0

Node.js

목록 보기
5/6
post-thumbnail

2021년 8월 5일에 작성된 문서 5번 입니다.
node.js의 배운 내용을 정리했습니다.


Node.js Express

미들웨어 작성

미들웨어 함수는 다음과 같은 태스크를 수행할 수 있습니다.

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



간단한 “Hello World” Express 애플리케이션에 대한 예

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

app.get('/', function (req, res) {
//이 애플리케이션을 위해 두 개의 미들웨어 함수를 정의 => res, req
//콜백은 없음.
  res.send('Hello World!');
});

app.listen(3000);



“myLogger”라는 이름의 미들웨어 함수에 대한 간단한 예

// 이 함수는 앱에 대한 요청이 해당 함수를 거쳐 전달될 때 
// 단순히 “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라는 특성을 요청 오브젝트에 추가

  • 이 미들웨어 함수 이름은 “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.

0개의 댓글