node.js - 为什么我要为所有路由处理程序添加前缀

标签 node.js express iisnode

我正在使用 Expressjs 创建一个应用程序,该应用程序在 IISNode 下的 node 上运行(即在 Windows 上)。

我首先进行的设置与我见过的所有 expressjs 示例非常相似:

  backend.configure(function() {
    backend.register('html', {
      compile: function(str, options) {
        return function(locals) {
          return str;
        };
      }
    });
    backend.set('views', __dirname + '/views');
    backend.set('view engine', 'html');
    backend.set('view options', {
      layout: false
    });
    backend.use(express.bodyParser());
    backend.use(backend.router);
    backend.use(express.static(__dirname + '/public'));
  });  

假设我的网站正在 localhost://mysite 上运行。我必须按如下方式创建所有路由处理程序。

  backend.get('/mysite/index', function(req, res, next) {
    return res.render('index');
  });

即我必须在它们前面加上“mysite”前缀。我见过的例子都不需要这个。这与 IISNode 还是其他我没有配置的东西有关?

最佳答案

我一直在寻找这个功能,但是是为了 API 路由,而不是静态文件。我所做的是,当我初始化路由器时,我添加了挂载路径。所以我的配置看起来像这样

//Default configuration
app.configure(function(){
    app.use(express.compress());
    app.use(express.logger('dev'));
    app.set('json spaces',0);
    app.use(express.limit('2mb'));
    app.use(express.bodyParser());

    app.use('/api', app.router);        // <---

    app.use(function(err, req, res, callback){
        res.json(err.code, {});
    });
});

调用路由器时注意“/api”

关于node.js - 为什么我要为所有路由处理程序添加前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9465182/

相关文章:

node.js - putBotAlias 在 AWS LexModelBuildingService node.js 中不起作用

node.js - 执行表单处理和处理的示例 Node.js - 在 Node.js 中

javascript - MSNodeSQL 和 IISNode

iis - nodejs socket.io 与 IIS Node

node.js - 通过 SSL 托管在 IIS 上的 NodeJS Express API 返回错误 : unable to verify the first certificate

javascript - 通过GET请求向express server请求数据返回的是document而不是data

mysql - Node.js MySql 查询返回未定义的行对象

javascript - jade、express 和 mysql 结果

node.js - 我无法获取/users json

javascript - 在express.js服务器中使用条件