我正在研究一個大學項目,我們決定去參考MEAN技術堆棧。說實話,我是一個初學者,NodeJS
和express
,更確切地說,這是我第一次用它做。 我發現最好使用express.Router
,而不是放置所有路線來表示實例,例如app.post('path', function(req, res) { ... })
如何將單箇中間件與多個express路由器配合使用?
所以這是我
var express = require('express');
var app = express();
function authorizationMiddleware(req, res, next) {
...
}
// handles login, doesn't meed autorizationMiddleware
var authRouter = express.Router();
authRouter.route('/login')
.post(function (req, res) {
...
});
// handles fetching of a single, all person(s), fetching of transactions for a person
var personRouter = require('./routes/personRoutes')(Person, Transaction, autorizationMiddleware);
//handles adding of a new transaction e.g. POST /api/transactions where params such as sender, recipient and amount are passed in body
var transactionRouther = require('./routes/transactionRoutes')(Person, Transaction, autorizationMiddleware);
app.use('/api', authRouter);
app.use('/api/persons', personRouter);
app.use('/api/transactions', transactionRoutes);
app.listen(8080, function() {
console.log('Listening on port: ' + 8080);
});
正如你可以看到我有三個路由器(甚至不知道我是否有內[114]與他們太遠),authRouter
只處理登錄和我也決定將人的邏輯與交易邏輯分開。 (也許我可以用/api/persons/:personId/transactions
的方式處理新交易的創建,但我更喜歡發送所有必需的參數)。
我想問你是否同意我試過的解決方案。正如您所看到的,我正將authrizationMiddleware
函數(處理JWT令牌的驗證)功能傳遞給路由器模塊並在那裏使用它。 有沒有更好的方式來使用多個路由器使用相同的中間件,或者這是一種合法的方式?
Thx 乾杯!