如何在ExpressJS

时间:2017-01-09 18:42:09

标签: javascript express

我是新来表达的,我已经完成了一个教程,让我添加这样的路线:

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/foodsfoods.js 来自/api/user/:id
  • /api/usersusers.js

1 个答案:

答案 0 :(得分:1)

除非您使用http谓词指定意图,否则URL必须是唯一的。

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 */ });

<强>更新

假设您希望将业务逻辑划分为单独的文件,可以使用以下方法完成此操作:

foods.js

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);

我个人喜欢将路线列在文件中,它可以让您快速查找哪些路线支持哪些动词。注意我已经创建了一个额外的功能来添加新的食物。

我希望此更新有帮助