Javascript 如何在ExpressJS中使用同一路径下的第二个路由文件
我是express的新手,我已经通过了一个教程,该教程让我添加了如下路线:Javascript 如何在ExpressJS中使用同一路径下的第二个路由文件,javascript,express,Javascript,Express,我是express的新手,我已经通过了一个教程,该教程让我添加了如下路线: var index = require('./routes/index'); var foods = require('./routes/foods'); app.use('/', index); app.use('/api', foods); 然后像这样使用它们: var index = require('./routes/index'); var foods = require('./routes/foods')
var index = require('./routes/index');
var foods = require('./routes/foods');
app.use('/', index);
app.use('/api', foods);
然后像这样使用它们:
var index = require('./routes/index');
var foods = require('./routes/foods');
app.use('/', index);
app.use('/api', foods);
我现在想在/api
路径下添加另一条路由,但我不确定如何在语义上做到这一点。类似这样的东西(尽管这不起作用)
server.js
var index = require('./routes/index');
var foods = require('./routes/foods');
var foods = require('./routes/users');
...
app.use('/', index);
app.use('/api', [foods, users]);
这将允许我有如下路线:
,/api/food/:id
来自/api/foods
foods.js
,/api/user/:id
来自/api/users
users.js
var foods = require('./routes/foods');
var users = require('./routes/users');
app.get('/api/foods', foods);
app.get('/api/users', users);
app.post('/api/foods', function(req, res) { /* other function */ });
更新
假设您想将业务逻辑划分到单独的文件中,您可以通过以下方式实现:
食品公司
module.exports = {
getAll: function(req, res) { ... },
getItem: function(req, res) { ... },
addItem: function(req, res) { ... }
};
users.js
module.exports = {
getAll: function(req, res) { ... },
getItem: function(req, res) { ... }
};
server.js
var foods = require('./routes/foods');
var users = require('./routes/users');
app.get('/api/food/:id', foods.getItem);
app.get('/api/foods', foods.getAll);
app.post('/api/foods', foods.addItem);
app.get('/api/user/:id', users.getItem);
app.get('/api/users', users.getAll);
我个人喜欢在文件中列出路由,它可以让您快速查找支持哪些谓词的路由。注意,我已经创建了一个额外的函数来添加新的食物项目
我希望这次更新能有所帮助我想你误解了我的问题。
GET
和POST
方法存储在foods.js
和users.js
中,我正在server.js
中工作,试图导入前缀为/api
的文件,这样我就可以使用/api/food/:id
这样的路径,/api/foods
来自foods.js
和/api/user/:id
,/api/users
来自users.js
好的,让我更新我的答案,并展示一个可能的解决方案。我知道这个解决方案将如何工作,但它似乎会使服务器.js
文件过载。我希望它只有一个app.use('api',routes)
语句。您的解决方案还将路由路径从函数中拆分。我想我更喜欢在routesapp.get('/foods',function(req,res,next){
我通常将路由定义移动到routes.js文件中,因此我在server.js中只有设置和中间件-可能看起来像require('/routes.js')(app);我只在routes文件中保留url和对控制器的引用