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;

 

반응형