我想将POST和GET请求作为单个请求处理,这样我的所有路由和后续功能只需处理一个请求,而不是为GET重复一次,而是为POST重复一次。
所以我认为最简单的方法是使用中间件尽早将POST转换为GET,这有什么问题吗?
if(req.method=='POST'){
req.method = 'GET';
req.query = req.body;
delete(req.body);
}
答案 0 :(得分:1)
对于两个请求,您可以具有相同的处理函数,即
app.get('/', handlerFunction);
app.post('/', handlerFunction);
答案 1 :(得分:0)
您可以express
响应所有POST请求,因为302重定向到同一个URL(这些始终是GET请求)。
以下是一些示例代码:
// Redirect all post requests
app.post('^*$', function(req, res) {
// Now just issue the same request again, this time as a GET
res.redirect(302, req.url);
});
});
旁注:这会有效,但我不建议将其作为长期解决方案。如果您确定需要以不同于GET请求的方式处理POST请求,则可维护性将变得很痛苦。从长远来看,你最好对如何处理POST和GET请求有明确的定义,而不是对它们进行相同的处理。
答案 2 :(得分:0)
推荐的方法是在这种情况下为两者提供相同的处理函数。例如。
app.get('/path', handler);
app.post('/path', handler);