Node.js
[Node.js] express로 GET, POST, ROUTE 요청 처리하기
맑은 눈의 우사미
2023. 9. 20. 14:50
반응형
1. App.js
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const adminRoutes = require('./routes/admin.js');
const shopRoutes = require('./routes/shop.js');
app.use(bodyParser.urlencoded({extended:false}));
app.use('/admin', adminRoutes);
app.use('/shop', shopRoutes);
app.use((req, res, next)=>{
res.status(404).send('<h1> Page not found! </h1>')
})
app.listen(3000);
그리고 routes 폴더에 admin.js와 shop.js를 추가하였다.
여기서 알고 넘어가야 하는 것은
- app.use : 문자열이 일치하는 모든 요청을 처리한다. 예를 들어 path 가 '/test-admin'이고 app.use의 첫번째 인자로 '/test'를 처리하고 있다면 이 코드를 거치게 된다
- app.get : 정확히 경로가 일치하는 get 요청을 처리한다.
- app.post : 정확히 경로가 일치하는 post요청을 처리한다.
2. ./routes/admin.js
const express = require('express');
const router = express.Router();
router.get('/add-product', (req, res, next)=>{
res.send('<form action="/admin/add-product" method="POST"><input type="text" name="title"><button type="submit">add product</button></form>');
});
router.post('/add-product', (req, res, next)=>{
console.log(req.body);
res.redirect('/admin/add-product');
});
module.exports = router;
app.js에서 app.use('/admin', adminRoutes);로 설정했기 때문에 이 라우트에 대해서는 앞에 항상 admin을 포함하고 있다.
그러므로 get('/add-product')는 get('/admin/add-product)와 같다.
3. ./routes/shop.js
const express = require('express');
const router = express.Router();
// router.get : 정확히 경로가 일치할 떄 처리함
// router.use : 패스가 일치할때 예를들면 /로 시작하는 모든 경로의 요청을 처리함
router.get('/', (req, res, next)=>{
res.send(`<h1>hello this is ${req.url} page</h1>`);
});
module.exports= router;
반응형