-
Express.js] 경로 필터링Node.js 2023. 12. 11. 15:01
아래와 같이 공통의 경로(/admin)를 포함하는 라우터가 있다고 하자.
// admin.js const express = require("express"); const router = express.Router(); // /admin/add-product <- GET router.get("/admin/add-product", (req, res, next) => { res.send( '<form action="/add-product" method="POST"><input type="text" name="title"><button>Add Product</button></form>' ); }); // /admin/add-product <- POST router.post("/admin/add-product", (req, res, next) => { console.log(req.body); res.redirect("/"); }); module.exports = router;
둘 다 /admin/add-product라는 url 요청에 응답하지만
get과 post 방식의 접근으로 구분되므로 다른 라우터이다.
이때 라우터 내부에서는 공통의 경로를 삭제하고
아래와 같이 app.js의 미들웨어에서 공통경로를 지정해줄 수 있다.
app.use('/admin', adminRoutes);
전체코드
// app.js 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 })); app.use('/admin', adminRoutes); app.use(shopRoutes); app.use((req, res, next) => { res.status(404).send('<h1>Page not found</h1>') }) app.listen(3000);
// admin.js 아래 경로에서 /admin 삭제 const express = require("express"); const router = express.Router(); // /admin/add-product <- GET router.get("/add-product", (req, res, next) => { res.send( '<form action="/add-product" method="POST"><input type="text" name="title"><button>Add Product</button></form>' ); }); // /admin/add-product <- POST router.post("/add-product", (req, res, next) => { console.log(req.body); res.redirect("/"); }); module.exports = router;
요청을 날려보면
404페이지로 연결된다.
form 태그는 여전히 /add-product로 연결하고 있기 때문이다.
아래 코드로 수정 후 다시 요청을 보내보면
router.get("/add-product", (req, res, next) => { res.send( '<form action="/admin/add-product" method="POST"><input type="text" name="title"><button>Add Product</button></form>' ); });
정상적으로 요청이 처리되었다.
'Node.js' 카테고리의 다른 글
Express.js]Navigation을 위한 헬퍼(유틸)함수 사용 (0) 2023.12.12 Express.js] HTML 페이지 서비스하기 (0) 2023.12.11 Express.js] 404 오류 페이지 추가하기 (0) 2023.12.11 Express.js] 라우팅을 다른 파일에 위탁하기 (0) 2023.12.07 Express.js] body-parser로 form 요청 분석하기 (0) 2023.12.07