티스토리 뷰
const router = express.Router();
- 기존에 app = express() 그리고 app.use()로 했던 라우팅을 모듈화하기 위해 사용한다.
- 기존 app과 동일하게 라우팅을 한다.
- 리퀘스트를 받는 메서드로 use, get, post 가 있는데, use는 get post를 모두 받고, get과 post는 같은 path를 받더라도 다른 라우팅으로 구분된다.
- 인자는 'path 이름'과 콜백 함수이다.
- 메인 앱에서는 해당 라우트 파일을 import 해주고, app.use인자로 import해준 변수를 넣어주면 된다. 인자 앞에 특정 path이름을 넣어주면, 해당하는 공통 path로만 시작하는 path로 보내지고, 그 path에 해당하는 라우트 get 이나 post에서는 url path 구분시 공통 path를 생략할 수 있다.
- 라우팅하는 파일에서는 꼭 module.exports=router; 를 해준다. 이를 통해 메인 앱에서 import가 가능하다.
main 앱
const path =require('path');
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const adminRoutes = require('./routes/admin');
const shopRoutes = require('./routes/shop');
app.use(bodyParser.urlencoded({extended: false})); //parser
app.use('/admin',adminRoutes); // '/admin' 으로시작하는 path만 보내진다.
app.use(shopRoutes);
app.use((req,res,next)=>{
res.status(404).send('page not found');
});
app.listen(3000);
admin 라우트
const express = require('express');
const router = express.Router();
// /admin/add-product => GET
router.get('/add-product',(req,res,next)=>{
res.send('<h1>hi</h1>');
});
// /admin/add-product => POST
router.post('/add-product',(req,res,next)=>{ //get과 post방식으로 다르기때문에, 같은 path를 써도 상관없다.
console.log(req.body);
res.redirect('/');
});
module.exports = router;
shop 라우트 (기본페이지)
const express = require('express');
const rootDir = require('../util/path');
const router = express.Router();
router.get('/',(req,res,next)=>{
res.send('<html>hello</html>');
});
module.exports=router;
'web : back-end > node js' 카테고리의 다른 글
[node js] Express : Request로 받은 데이터 전달하기 (0) | 2020.06.17 |
---|---|
[node js] Express : 라우트의 리스폰스로 파일 보내기 (0) | 2020.06.16 |
[node js] Express: 미들웨어를 통해 다른 path(route) 처리하기 (0) | 2020.06.15 |
[node js] 노드 js의 이벤트 루프 구조 (0) | 2020.06.14 |
[node js] 노드 js의 비동기 실행 이해하기 (0) | 2020.06.14 |
댓글