2014-01-08 36 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