首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在特定路径前缀上挂载app.get()路由

如何在特定路径前缀上挂载app.get()路由
EN

Stack Overflow用户
提问于 2013-06-18 23:46:08
回答 2查看 16.1K关注 0票数 20

我正在使用Node.js和Express编写一个应用程序接口。我的API有如下形式的GET方法:

代码语言:javascript
复制
/api/v1/doSomething
/api/v1/doSomethingElse

我的代码看起来像这样:

server.js:

代码语言:javascript
复制
var app = express();
...
var routes = require('./routes')
routes.attachHandlers(app, '/api/v1')

routes/index.js

代码语言:javascript
复制
...
module.exports.attachHandlers = function(app, context) {
    //get a list of all the other .js files in routes
    //for each route, require() it and call it myRoute
    myRoute.attachHandlers(app, context)
}

routes/some route.js

代码语言:javascript
复制
...
module.exports.attachHandlers = function(app, context) {
    app.get(context + '/doSomething', doSomething)
    app.get(context + '/doSomethingElse', doSomethingElse)
}
...

实际上,我正在通过应用程序向下传递上下文路径/挂载点。但是,如果有人编写如下所示的路由,则上下文将会丢失:

代码语言:javascript
复制
app.get('/doFoo', foo)

而不是将这部分应用程序接口安装在/api/v1/doFoo上,而是在/doFoo上。我希望避免像这样传递上下文路径。

app.use支持在可选的挂载路径上挂载中间件。我在网上看到过使用app.use在挂载路径上挂载整个Express应用程序的参考资料。这似乎是我想要做的事情,但我不确定如何做,或者这是否是我的特定用例的最佳解决方案。

总而言之,我想在默认情况下使用特定的前缀挂载我的app.get()路由。做这件事的最好方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-19 03:00:27

我认为express-namespace会为此而努力。

票数 5
EN

Stack Overflow用户

发布于 2013-06-19 03:43:04

以下是在Express 3中挂载路由的工作示例:

./snipe3app.js

代码语言:javascript
复制
var express = require('express');
var app = module.exports = express();

app.get('/subapp', function (req, res) {
  res.send('You are on the /sub/subapp page.');
});

./app.js

代码语言:javascript
复制
var express = require('express'),
    http = require('http'),
    subApp = require('./snipe3app'),
    app = express();

app.use(express.favicon());
app.use(express.bodyParser());
app.use(app.router);
app.use('/sub', subApp);

app.get('/', function (req, res) {
  res.send('You are on the root page');
});

http.createServer(app).listen(3000, function(){
  console.log('Express server listening on port 3000. Point browser to route /secure');
});

在执行此操作时,您必须注意处理路由的顺序。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17173286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档