2016-01-22 49 views
0

我通過DJANGO API移植到Node.js,並且需要在路徑末尾支持.json。添加/.json到快速路線末端的最佳方式是什麼?

示例:GET /users/:id/.json將返回代表用戶的JSON對象。

問題是我有一些自定義行爲的路由,所以我需要它返回相同的邏輯,我會像運行GET/users /:id一樣運行。

我可以輕鬆地複製原始路線並將/.json添加到它,但這不是我希望這樣做的方式,原因很明顯。

我可以使用什麼方法將「.json處理程序自動」粘貼到路徑的末尾,並讓它使用不同的自定義路線?

+0

你不能讓一個可選的路徑參數和做邏輯檢查(無論是否使用自定義行爲)在你的控制器? – stUrb

+0

如果您添加查詢參數,該怎麼辦? '?type = json' –

+0

添加一箇中間件,在您的路由器之前查找.json,如果找到,則在req上設置一個屬性並將其從url中移除,從而允許您的路由像往常一樣處理它。但最好只使用適當的標題或查詢參數。 –

回答

0

一個很好的方法是使用查詢參數。你可以定義你的路線,你通常會:

/users/:id 

然後有一些邏輯(比如,在中間件),看起來對於type查詢參數。

if(req.query.type) { 
    if(req.query.type === 'json') { 
    // send json 
    } 
} 

完整的路由客戶端將達到然後將:/users/12345?type=json

參考:express docs, req.query section

+0

適用於新應用程序,但與OP的預先API不兼容。 – user949300

相關問題