Express 라우터
큰 앱 하나에 라우트를 많이 넣으면 코드의 길이가 매우 길어집니다. 실제로 앱을 만들때는 그렇게 하지 않기 때문에 Express 라우터를 사용합니다.
아래와 같은 라우트를 만들어봅시다.
Route | Method |
GET | /farms |
POST | /farms |
GET | /farms/:id |
GET | /farms/:id/edit |
farms.js
const express = require('express');
const router = express.Router();
router.get('/farms', (req, res) => {
res.send('All Farms');
})
router.post('/farms', (req, res) => {
res.send('Creating Farm');
})
router.get('/farms/:id', (req, res) => {
res.send('Viewing One Farm');
})
router.get('/farms/:id/edit', (req, res) => {
res.send('Editing One Farm');
})
module.exports = router;
index.js
const colors = require('colors');
const express = require('express');
const farmRoutes = require('./Routes/farms');
const app = express();
app.listen(3000, () => {
console.log('Listening on port 3000!'.yellow);
})
app.use('/', farmRoutes);
마지막의 app.use 부분이 미리 정의한 라우트에 접두사를 지정하는 역할을 합니다. 아래의 사진에서 모든 라우트가 정상 작동하는 것을 확인할 수 있습니다.
Express 라우터 미들웨어
기밀이 적혀있는 페이지를 관리자만 볼 수 있도록 해봅시다.
admin.js
const express = require('express');
const router = express.Router();
router.use((req, res, next) => {
if (req.query.isAdmin === 'true') { return next(); }
return res.send("SORRY NOT AN ADMIN!!!!");
})
router.get('/topsecret', (req, res) => {
res.send('This is top secret');
})
module.exports = router;
index.js
const colors = require('colors');
const express = require('express');
const farmRoutes = require('./Routes/farms');
const adminRoutes = require('./Routes/admin');
const app = express();
app.listen(3000, () => {
console.log('Listening on port 3000!'.yellow);
})
app.use('/', farmRoutes);
app.use('/admin', adminRoutes);
'웹 프로그래밍' 카테고리의 다른 글
[JS] 로그인 상태 유지 (2) | 2023.12.01 |
---|---|
[Yelpcamp 프로젝트] flash (0) | 2023.11.29 |
[Express] 세션 (0) | 2023.11.17 |
[JS] 쿠키 (0) | 2023.11.17 |
[Yelpcamp 프로젝트] 리뷰 기능 추가하기 (1) | 2023.11.16 |