我正在尝试正确、干净地设置我的 Express 路线,这是我的 paths.js 文件:
var tokenCtrl = require('./routes/token');
var expressJwt = require('express-jwt');
var config = require('./config');
module.exports = function (app) {
app.route('/api/token')
.all(expressJwt({
secret: config.jwtPrivateKey,
userProperty: 'auth' //JWT payload will be bound to this value (req.{value})
}))
.post('validate', tokenCtrl.validate)
.get('generate', tokenCtrl.generate);
}
不幸的是,我无法在 .post 或 .get 中指定路由后缀(如上所示)。所以我坚持做这样的事情:
var tokenCtrl = require('./routes/token');
var expressJwt = require('express-jwt');
var config = require('./config');
module.exports = function (app) {
app.route('/api/token/validate')
.all(expressJwt({
secret: config.jwtPrivateKey,
userProperty: 'auth'
}))
.post(tokenCtrl.validate);
app.route('/api/token/generate')
.all(expressJwt({
secret: config.jwtPrivateKey,
userProperty: 'auth'
}))
.get(tokenCtrl.generate);
}
现在这相当麻烦。有没有办法说我的所有路由都将具有 /api
前缀,然后为每个 Controller 添加另一个前缀?有更好的办法吗?
最佳答案
您可以使用 express.Router()
为您的 api 使用单独的路由器;
var express = require('express');
var tokenCtrl = require('./routes/token');
var expressJwt = require('express-jwt');
var config = require('./config');
var router = express.Router();
router.route('/token/validate')
.all(expressJwt({
secret: config.jwtPrivateKey,
userProperty: 'auth'
}))
.post(tokenCtrl.validate);
router.route('/token/generate')
.all(expressJwt({
secret: config.jwtPrivateKey,
userProperty: 'auth'
}))
.get(tokenCtrl.generate);
module.exports = router;
然后在你的 app.js 中你就可以这样做。
var express = require('express');
var apiRouter = require('./api');
app.use('/api', apiRouter);
然后您可以执行相同的/token
,或/validate
和/generate
关于node.js - Express 4 路线设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27451489/