node express将POST和GET作为单个请求进行处理

时间:2016-12-15 23:43:42

标签: node.js

我想将POST和GET请求作为单个请求处理,这样我的所有路由和后续功能只需处理一个请求,而不是为GET重复一次,而是为POST重复一次。

所以我认为最简单的方法是使用中间件尽早将POST转换为GET,这有什么问题吗?

if(req.method=='POST'){
  req.method = 'GET';
  req.query = req.body;
  delete(req.body);
}

3 个答案:

答案 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);