NodeJS设置通配符路由或url重写

NodeJS setting up wildcard routes or url rewrite

本文关键字:url 重写 路由 设置 通配符 NodeJS      更新时间:2023-09-26

我在node中使用connect (source/routes.js)有一个简单的路由:

exports.routes = function(app) {
    app.get('/data', function(req, res, params) {
            res.writeHead(200, { 'Content-type': 'text/plain' });
            res.write('Authenticated: ' + connect.session.auth + ''n');
            res.end('app.get /data');
    });
}

启动app (app.js):

var routes = require('connect');
var routes = require('./source/routes');
var server = connect.createServer(
    connect.cookieParser(),
    connect.session({ secret: 'justmeknowsthis', cookie: { maxAge: config.data.sessionTimeout }}),
    connect.router(routes.routes)
);
server.listen(3000);

我想要做的是:

app.get('/data*', function(...

我通过解析url来决定返回什么数据。

首先,路由器中间件已经从Connect中移除,所以你可以使用Express或为将来创建自己的路由器更安全(参见此提交:https://github.com/senchalabs/connect/commit/2ca7ec3ff64cb7600bfd029233228236bf048671)。

如果你选择使用Express,你可以为路由传递一个正则表达式(更多信息在这里:http://expressjs.com/guide.html#routing),但我会使用这样的东西来代替(针对你的具体情况):

app.get('/data/:type', function (req, res) {
  console.log('Received ' + req.params.type + ' data');
});