2017-01-09 79 views
0

我是新來表達使用相同的路徑下的第二路由文件,我已經通過一個教程,讓我添加路由這樣了:如何ExpressJS

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/users from users.js

回答

1

該URL必須是唯一的,除非您使用http動詞指定意圖。

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

UPDATE

比方說,你要在不同的文件劃分出你的業務邏輯,你可以用下面的做到這一點:

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

我個人喜歡有一個文件中列出的路線,它給你具體航線您與動詞支持快速查找。注意我已經創建了一個額外的功能來添加新的食物。

我希望這個更新有幫助

+0

我想你誤解了我的問題。 'GET'和'POST'方法存儲在'foods.js'和'users.js'中,我正在'server.js'中嘗試導入這些文件,前綴爲'/ api',所以我可以'users.js'和'/ api/user /:id','/ api/users'有類似於'/ api/food /:id','/ api/foods'的路由,它們來自'users.js'。 –

+1

Okey ,讓我更新我的答案,併爲此顯示一個可能的解決方案 –

+0

我看到這個解決方案將如何工作,但它似乎會重載'server.js'文件將路徑。我希望它只有1個'app.use('api',routes)'語句。您的解決方案還會將功能的路徑路徑分開。我認爲我更喜歡在路由中看到'app.get('/ foods',function(req,res,next){' –