💨 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 |