2014-01-08 32 views
3

最好是有一個單獨的函數來處理同一個API端點的GET和POST請求,或者將它們合併成一個函數,該函數根據req.body或req的存在性進行區分。 PARAMS?Expressjs函數來處理GET和POST

即。

app.get('/api/profilepic', api.get_profilepic); 
app.post('/api/profilepic', api.change_profilepic); 

或:

app.get('/api/profilepic', api.profilepic); 
app.post('/api/profilepic', api.profilepic); 

如果是後者,並expressjs提供一個輔助函數,以確定請求類型?至今我確定req是否爲POST的方法需要下劃線:

if (_.size(req.body) == 0) 
+2

從你的函數名來看,他們執行不同的任務。所以我會讓他們分開。 FWIW,你可以檢查'req.method'來查看它是否包含'GET'或'POST'(或其他方法,甚至)。 – robertklep

+6

還有'app.all()'來處理(和更多) – adeneo

回答

7

最佳做法是區分顧慮;因此,你應該有單獨的函數來處理每個HTTP動詞。這使代碼更易於維護。

8

沒有一般規則,最好的方法取決於你正在處理的案例。我認爲,如果你想要一個API端點接受POST和GET請求相結合,你應該使用快遞功能全部()是這樣的:

app.all('/api/profilepic', api.get_profilepic); 

您應該使用單獨的端點POST和GET當處理函數不是相同。

有關詳細信息,請參閱: http://expressjs.com/en/guide/routing.html