node.js - Express 4 路线设置

标签 node.js express

我正在尝试正确、干净地设置我的 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/

相关文章:

javascript - Node .js : How do I pass in multiple variables into a view?

node.js - Node -oauth Yahoo API oAuth2 问题

java - Eureka检测服务状态

javascript - Heroku Foreman 在 Express.js bodyParser() 调用上退出

javascript - 即使 Node 服务器成功运行,index.html 也不会加载

node.js - PEM 例程 :PEM_read_bio:no start line - Unable to decode JWT token

javascript - 没有 'Access-Control-Allow-Origin' react 快速 docker 应用程序

node.js - 带有express和mikeal/request库的nodejs代理

javascript - 如何在 Node.js 中的每个 API 调用之间进行延迟

javascript - AngularJS $resource 在使用方法 :POST 时调用了错误的 API URL