express 란?
express는 node에서 지원하는 백엔드 어플리케이션 프레임워크입니다. 현재 express는 가장 사용자가 많은데요 그만큼 만족도가 높다는 뜻이겠죠?
npm express 바로가기 | express 바로가기
express 시작하기
express는 npm을 통해 터미널에서 설치를 해야 합니다.
npm install express
express 설치 후, js파일을 열어 아래와 같은 코드를 작성해 주면 기본적인 express 서버 구동이 끝이 나게 됩니다.
//server.js
const express = require('express')
const app = express()
app.get('/', function (req, res) {
res.send('Hello World')
})
app.listen(3000)
express의 특징
- 편한 라우팅
- express middleware
express의 큰 특징으로는 이 두 가지를 가지고 있습니다.
라우팅
<사용 전>
const express = require('express');
const app = express();
app.get('/',(req,res)=>{
res.send('메인화면')
})
app.get('/user/login',(req,res)=>{
res.send('로그인화면')
})
app.get('/board/view',(req,res)=>{
res.send('게시판글화면')
})
app.get('/board/list',(req,res)=>{
res.send('게시판화면')
})
// 등등.. 점점 늘어나는 코드
<사용 후>
// app.js
const express = require('express');
const app = express();
const rootRouter = requrie('./routes/root');
const userRouter = requrie('./routes/user');
const boardRouter = requrie('./routes/board');
app.use('/', rootRouter);
app.use('/', userRouter);
app.use('/', boardRouter);
// ./routes/root.js
const express = require('express');
const router = express();
router.route('/')
.get(()=>{})
.post(()=>{})
.put(()=>{});
module.exports = router;
// ./routes/user.js
const express = require('express');
const router = express();
router.get('/login',()=>{})
router.post('/signup',()=>{})
router.put('/mypage',()=>{})
module.exports = router;
// ./routes/board.js
const express = require('express');
const router = express();
router.get('/view/:id',()=>{})
router.get('/list',()=>{})
router.post('/write',()=>{})
module.exports = router;
express를 사용하려는 이유 중 하나로 깔끔한 라우팅을 들 수 있습니다.
라우터를 많이 연결하게 되면 코드가 매우 길어지면서 가독성이 떨어집니다. 이때 라우팅을 이용하여 라우터를 분리할 수 있게 expess가 도와주는데 이렇게 각각의 라우터 파일을 분리하여 app.js에서 코드를 줄여 가독성을 높이고, 각 라우터에서 라우팅을 관리를 할 수 있게 합니다.
또한 라우터 주소로 router.get('/view/:id', ()=>{})처럼 특수한 패턴을 갖고 있는데 라우터 매개변수라고 불립니다. 주소에 :id를 입력해 놓으면 문자 그대로 :id를 의미하는 게 아니라 임의의 값이 여기에 대입된다는 소리입니다. /view/1은 말 그대로 view의 1, /view/342는 view의 342에 해당하는 값을 요청하는 것입니다.
그리고 주소는 같은데 메서드만 다른 경우에는 router.route 혹은 app.route로 묶어서 그룹화시킬 수 있습니다.
위 코드 중 root.js에 해당됩니다.
미들웨어
미들웨어는 express 내에서 요청과 응답을 하기 전에 사용되는 독립적인 함수로 아래와 같은 구조로 되어있다.
app.메서드(<경로>,<미들웨어>, <콜백함수>)
app.get('/',(req,res,next)=>{
//미들웨어 작성란
next(); // 미들웨어에서 콜백함수로 넘기기
}, (req,res)=>{
//동작
})
모든 요청에서 미들웨어를 작동하게 하려면 어떻게 해야 하나요?
app.use(<미들웨어>)
미들웨어는 req, res, next를 매개변수로 가지는 함수입니다. (예외로 에러처리 미들웨어는 err, req, res, next 4개의 매개변수를 가집니다.) 보통은 app.use나 메서드 중간에 작성을 하는데요 next를 호출하지 않는 미들웨어는 res.send나 res.sendFile 같은 메서드로 응답을 보내야 합니다. 그리고 미들웨어는 미들웨어 간에 데이터를 전달을 하기도 합니다.
app.use((req,res,next)=>{
//1번 미들웨어
req.data = {'id' : 1, 'title' : '미들웨어'}
next();
}, (req,res,next)=>{
//2번 미들웨어
console.log(req.data.title) // '미들웨어'출력;
})
미들웨어 패키지 중에 가장 많이 사용하는 패키지 모듈도 가져와봤습니다.
- body-parser : HTTP 요청 body를 파싱 할 때 사용
- cookie-parser : 쿠키헤더를 파싱하고 req.cookies에 할당가능
- session : 서버기반의 세션을 만들어줍니다.(cookie-session은 쿠키 기반 세션)
- cors : Cross-origin resource sharing를 활성화합니다.
더 많은 미들웨어를 확인하고 싶으시면 여기에서 확인이 가능합니다.
'프로그래밍📚 > node' 카테고리의 다른 글
express-generator 알아보기 (0) | 2023.12.08 |
---|---|
req.body, req.query, req.params (0) | 2023.12.07 |
응답을 통해 정보를 전달하자 - json (0) | 2023.12.06 |
Node Packaged Manager - NPM (0) | 2023.12.05 |
자바스크립트 플랫폼 node.js (0) | 2023.12.05 |