본문 바로가기

Node.js

6. Express.js

💨 Express.js 를 사용하는 이유 

 

Node.js 의 웹 프레임워크 중 가장 유명하다. 따라서 다양한 커뮤니티의 도움을 받을 수 있다. 

다양한 미들웨어를 통해 필요한 기능을 간단하게 추가할 수 있다.

 

 

💨 기본구조 

 

 

💨 동작 방식

 

1. app.js

 

var express = require('express');

var app = express();

app.js에서는 expree()로 생성되는 app 객체를 확인할 수 있다. 

app 객체는 Express.js의 기능을 담은 객체이다. 

Express.js의 모든 동작은 app 객체에 정의된다. 

 

2. app 객체 주요기능 

 

 

💨 라우팅 

 

Express.js는 다양한 라우팅 방식을 제공한다.

크게 app 라우팅과 Express.Router 를 통한 라우팅으로 나누어진다.

 

app.get('/', (req, res) => {
  res.send('GET /');
});

app.post('/', (req, res) => {
  res.send('POST /');
});

app.put('/', (req, res) => {
  res.send('PUT /');
});

app.delete('/', (req, res) => {
  res.send('DELETE /');
});

app.all('/', (req, res) => {
  res.send('ANY /');
});

 

💨 Express.Router

 

app 라우팅을 통해서는 라우팅의 핵심인 그룹화를 지원하지 않는다.

Express.Router 를 통해 라우팅을 모듈화 할 수 있다.

 

const express = require('expree');
const router = express.Router();

router.get('/', (req, res, next) => {
  res.send('respod with a resource');
});

module.exports = router;

 

router 객체에도 app 객체처럼 get, push, post, delete 함수를 사용할 수 있다.

 

app의 함수와 동일한 동작을 하는 함수로 첫 번째 인자가 라우팅 될 URL 이고, 마지막 인자가 라우팅 시 실행될 함수이다. 라우터는 일반적으로 모듈로 만들어서 사용한다.

 

const userRouter = require('./routes/users');
const app = express();

app.use('/users', userRouter);

const pertRouter = require('./pets');
const router = express.Router();

router.use('.pets', petRouter)length

module.exports = router;

 

작성된 라우터 모듈을 app 에 use 함수로 연결하여 사용할 수 있다.

 

router 객체에도 하위 라우터를 use 함수로 연결하여 사용할 수 있다.

 

 

💨 라우팅 - path parameter 사용 

 

Express.js 라우팅은 path parameter를 제공한다.

path parameter 를 사용하면, 주소의 일부를 변수처럼 사용할 수 있다. 

 

ex) 

/users/:id-/users/123, /users/456 등으로 접속했을 때 라우팅 적용

 

💨 Request Handler 

 

라우팅에 적용되는 함수를 Request Handler 라고 부름.

HTTP 요청과 응답을 다룰 수 있는 함수로, 설정된 라우팅 경로에 해당하는 요청이 들어오면 Request Hadler 함수가 실행된다.

 

router.get('/:id', (req, res) => {
  const id = req.params.id;
  res.send(`hello ${id}`);
});

 

router나 app의 HTTP method 함수의 가장 마지막 인자로 전달되는 함수이다.

 

설정된 라우팅 경로에 해당하는 요청이 들어오면 Request Handler 함수가 실행된다. 

요청을 확인하고, 응답을 보내는 역할을 한다.

 

앞서 설명했던 path parameter 를 사용하기 위해선 다음과 같은 Request 객체의 주요 값 및 함수가 필요하다.

 

 

 * req.queries : ? 뒤에 붙는 것을 쿼리 파라미터라고 한다.

 

💨 Request Handler - Response 객체 

 

HTTP 응답을 처리하는 개체이다. HTTP 응답의 데이터를 전송하거나, 응답 상태 및 헤더를 설정할 수 있다. 

 

 

 

'Node.js' 카테고리의 다른 글

8. REST API  (0) 2022.02.19
7. middleware  (0) 2022.02.19
5. 웹 프레임워크  (0) 2022.02.18
4. Node.js 의 모듈  (0) 2022.02.18
3. NPM  (0) 2022.02.17