首先先給我理解的懶人包~
router.use:搭配app.use適合針對某一前綴底下的API做特定的處理
ex:
創建router
const router = express.Router();
接著撰寫一個middware
router.use((req, res, next) => {
console.log('在這裡做一些必要的檢查邏輯');
next();
});
接著開始寫你的router
router.get('/wow', (req, res) => {
console.log('商業邏輯');
});
接著使用app.use綁定起來
app.use('/user', router);
在這個狀況下當你去打
/user/wow
他就必須去跑
router.use((req, res, next) => {
console.log('在這裡做一些必要的檢查邏輯');
next();
});
這個邏輯
當然嚕,如果你其底下有綁定一個post方法,當你用post去打,也一樣要跑那個邏輯
所以小夥伴應該就知道了,我們可以把這個邏輯拉出來。
不只是針對middware,我們也可以用這個東西生成一個固定格式router
我們用AI來生成code
const express = require('express');
const router = express.Router();
// 處理 /users 路由的 GET 請求
router.get('/', function(req, res) {
res.send('這是用戶列表');
});
// 處理 /users/:id 路由的 GET 請求
router.get('/:id', function(req, res) {
const userId = req.params.id;
res.send(`這是用戶 ${userId} 的詳細信息`);
});
// 處理 /users/:id 路由的 DELETE 請求
router.delete('/:id', function(req, res) {
const userId = req.params.id;
res.send(`刪除用戶 ${userId}`);
});
// 你可以繼續添加其他路由處理程序
module.exports = router;
接著引入
//引入上面檔案的路徑
const usersRouter = require('./routes/users');
app.use('/users', usersRouter);
這樣當我們去打/user的時候就可以自動進入到那一隻檔案了,
當然,也可以在裡面加上各自驗證的邏輯,就不會把邏輯都擠在一起了
app.use:適用於針對全局middware。
ex:app.use(express.json());
這就是很標準的針對所有router都擁有middware效果的例子
當然嚕,肯定有更多厲害的用法,不過目前理解起來應該主要應用在這兩個地方
希望能幫助到你們~