심플코더
간단한 코딩 공간
   

글쓰기    관리    수식입력
  • 분류 전체보기 (84)
    • AWS (1)
    • JavaScript (11)
    • 개인학습 (5)
    • DB (11)
    • OS (9)
    • Network (7)
    • DevOps (0)
    • TypeScript (1)
    • 개발 (1)
    • CKA (28)
hELLO · Designed By 정상우.
심플코더

간단한 코딩 공간

Express란?
JavaScript

Express란?

Express

Express는 nodeJS를 활용하여 REST 서버를 구현하게 해주는 프레임워크에 해당한다.

사용 방법

가장 단순하게 html을 통해 서버 렌더링을 하는 코드는 다음과 같다.

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

app.get('/', (req, res) => {
    res.render("렌더링 할 html의 경로")
});

app.listen(port, () => {
    console.log(`server is listening at port:${port}`);
});

 

우선 다음코드는  Express application을 생성한다.

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

express에서는 다양한 미들웨어 함수를 제공하고 있다.
이 때 미들웨어란 클라이언트와 서버 사이에서 목적에 맞게 처리를 진행하는 장치를 의미한다.

즉, 미들웨어 함수란 클라이언트와 서버 사이에서 목적에 맞는 기능을 하는 함수를 말한다.


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


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

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

 

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

 

 

즉, 미들웨어는 두 가지 선택지를 가지고 있는데 하나는 response를 만들어 호출을 종료하고 요청에 대한 응답을 돌려보내는 것이고 하나는 next()를 통해 다음 미들웨어에게 제어 흐름을 넘겨주는 것이다.

 

Express는 다음과 같은 유형의 미들웨어를 사용할 수 있다.

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

 

앞서 정의한 app 객체의 use()함수를 사용하면 미들웨어를 앱 오브젝트의 인스턴스에 바인드 할 수 있다.


var app = express();

app.use(function (req, res, next) {  
console.log('Time:', Date.now());  
next();  
});

 

위 코드에서 함수는 앱이 요청을 수신할 때 마다 실행된다.

다음과 같은 예시에서는 /user/:id 경로에 마운트되는 미들웨어 함수를 보여준다.
```javascript
app.use('/user/:id', function (req, res, next) {
  console.log('Request Type:', req.method);
  next();
});

 

다음 예시는 /user/:id 경로에 대한 GET 요청을 처리하는 미들웨어 하위 스택이 표현되어 있다.

app.get('/user/:id', function (req, res, next) {
  console.log('ID:', req.params.id);
  next();
}, function (req, res, next) {
  res.send('User Info');
});

// handler for the /user/:id path, which prints the user ID
app.get('/user/:id', function (req, res, next) {
  res.end(req.params.id);
});

 

라우터 미들웨어 스택의 나머지 미들웨어 함수들을 건너 뛰려면 next('route')를 호출하여 제어를 그 다음 라우트로 전달하면 된다.

단, next('route')는 app.METHOD() 또는 router.METHOD() 함수를 이용해 로드된 미들웨어 함수에서만 작동한다.

app.get('/user/:id', function (req, res, next) {
  // if the user ID is 0, skip to the next route
  if (req.params.id == 0) next('route');
  // otherwise pass the control to the next middleware function in this stack
  else next(); //
}, function (req, res, next) {
  // render a regular page
  res.render('regular');
});

// handler for the /user/:id path, which renders a special page
app.get('/user/:id', function (req, res, next) {
  res.render('special');
});

 

이러한 미들웨어를 사용하는 이유는 다음과 같다.

  • 요청 및 응답 객체 수정: 미들웨어 함수는 요청 객체나 응답 객체를 수정하거나 확장할 수 있다. 예를 들어, 요청 객체에 추가 적인 정보를 추가할 수 있다.
  • 라우팅 결정 : 특정 경로나 조건에 따라 요청을 다른 핸들러 함수로 라우팅할 수 있다.
  • 요청 데이터 처리: 요청의 body를 파싱하거나 쿼리 매개변수(주로 URL을 통해 제공되는 매개변수)를 추출하는 등의 작업이 가능하다.

 

'JavaScript' 카테고리의 다른 글

(JavaScript) Fetch API  (0) 2023.09.07
MySQL 개념  (1) 2023.09.04
Firebase 사용 방법  (0) 2023.08.12
React 공부하기 - Redux란?  (0) 2023.08.11
JavaScript의 코드스타일  (0) 2023.08.07
    'JavaScript' 카테고리의 다른 글
    • (JavaScript) Fetch API
    • MySQL 개념
    • Firebase 사용 방법
    • React 공부하기 - Redux란?
    심플코더
    심플코더

    티스토리툴바