//App.js
const path = require('path');
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname,"public"))); // #3
const adminRoute = require('./routes/admin.js');
const shopRoute = require('./routes/shop.js');
app.use('/admin', adminRoute); // **#1**
app.use(shopRoute);
app.use((req,res,next)=> {
res.status(404).sendFile(path.join(__dirname, "views","404.html"));
});
app.listen(4000);
//admin.js
const path = require('path');
const rootDir = require('../util/path'); // #2
const express = require('express');
const router = express.Router();
**// /admin/add-product => GET**
router.get('/add-product', (req, res, next) => {
res.sendFile(path.join(rootDir, "views","add-product.html")); // #2
});
**// /admin/add-product => POST**
router.post('/add-product', (req, res, next) => {
console.log(req.body);
res.redirect('/');
});
module.exports = router;
/admin/add-product => /add-product
/admin/add-product => /add-product
// /util/path.js
const path = require('path');
module.exports = path.dirname(process.mainModule.filename);
이 코드는 애플리케이션이 실행 될 수 있도록 해주는 파일의 경로를 알려줍니다.
// 404.html
<html lang="en">
<head>
...
<link rel="stylesheet" href="/css/main.css">
...
확장자를 살펴보고 css나 js 파일을 찾는 요청이라면, 자동으로 *public폴더로 포워딩 해준다. 여러 정적 폴더를 등록할 수도 있으며 요청은 원하는 파일을 찾을 때까지 모든 폴더를 통과한다.