Expressjs一个函数来处理GET和POST

max*_*max 4 connect node.js express

是否最好有一个单独的函数来处理同一API端点的GET和POST请求,或者将它们组合成一个根据req.body或req.params的存在进行区分的函数?

即.

app.get('/api/profilepic',  api.get_profilepic);
app.post('/api/profilepic',  api.change_profilepic);
Run Code Online (Sandbox Code Playgroud)

要么:

app.get('/api/profilepic',  api.profilepic);
app.post('/api/profilepic',  api.profilepic);
Run Code Online (Sandbox Code Playgroud)

如果是后者,expressjs是否提供了帮助函数来确定请求类型?到目前为止,我确定req是否为POST的方法需要使用下划线:

if (_.size(req.body) == 0)
Run Code Online (Sandbox Code Playgroud)

Mar*_*chi 13

没有一般规则,最好的方法取决于您正在处理的情况.我想如果你想要一个接受POST和GET请求的api端点,你应该使用express函数all(),如下所示:

app.all('/api/profilepic',  api.get_profilepic);
Run Code Online (Sandbox Code Playgroud)

当处理程序函数不相同时,您应该为POST和GET使用单独的端点.

有关详细信息,请参阅:http: //expressjs.com/en/guide/routing.html


Bre*_*ett 8

最佳做法是分开关注; 因此,您应该有单独的函数来处理每个HTTP谓词.这使代码更易于维护.