2016-04-25 41 views
1

首先,我已經搜索瞭解決此問題的解決方案,但是我沒有找到任何東西。對不起,如果它重複。Node.js中使用快速應用程序的端點之間的衝突

我有我的快遞+的Node.js應用的兩個端點是這樣的:

// Gets a tweet by unique id 
app.get('/tweets:id', function(req, res, next) { 
    // Response management 
}); 

// Gets mentions of user unique id 
app.get('/tweets/mentions', function(req, res, next) { 
    // Response management 
}); 

的問題是,請求GET請願「/微博/提到」,由第一次參加「/tweets /:id「 and later by 」/ tweets/said「,making a conflict。

我試圖改變端點的聲明順序,但總是請求由兩個端點參加。

「/鳴叫::提到」,但我需要通過訪問端點此外,我已經試過的東西「/微博/提到」,我想是有可能的方式。

我該如何解決這個衝突? 謝謝。

+0

一個問題:你是怎麼通過唯一的ID在「/微博/提及/」終端? –

+0

您應該使用'/ mentions'來設計適當的REST設計。 –

+0

@MatteoTosi我在一個頭裏有一個JWT,允許我在數據庫中搜索他的用戶ID。 – rpfc

回答

0

您是否在其中一個處理程序中使用了next()

next()將控制權傳遞給下一個匹配路徑,因此在您的示例中,如果其中一個被調用,並且在其中調用next(),則另一個將被調用。

我總是推薦使用'路由器',如果你有多個基本路徑,因爲它可以幫助你保持組織。

+0

感謝您的迴應,使用路由器,而不是使用next()是我的解決方案。 – rpfc

0

您可以通過在「tweet by id」處理程序中檢查req.params.id的值來解決衝突。

+0

謝謝,我會考慮進一步的問題! – rpfc

0

對於具有附加參數的路由,建議不要使用其他路由的相同基路徑。

喜歡的東西可能會爲你工作:

app.get('/tweets/users/:id', function(req, res, next) { 
    // Response management 
}); 

// Gets mentions of user unique id 
app.get('/tweets/mentions', function(req, res, next) { 
    // Response management 
}); 
+0

謝謝,答案是有效的,謝謝你的貢獻,我會考慮所有這些答案。 – rpfc

相關問題