我正在研究一个大学项目,我们决定去参考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 干杯!