【问题标题】:Expressjs one function to handle GET and POSTExpressjs 一种处理 GET 和 POST 的函数
【发布时间】:2016-02-27 18:29:49
【问题描述】:

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

即。

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)

【问题讨论】:

  • 从您的函数名称来看,它们执行不同的任务。所以我会让他们分开。 FWIW,您可以检查req.method 以查看它是否包含GETPOST(或其他方法,甚至)。
  • 还有app.all() 来处理这两个(以及更多)

标签: node.js express connect


【解决方案1】:

没有一般规则,最佳方法取决于您正在处理的案例。我认为如果你想要一个接受 POST 和 GET 请求的 api 端点,你应该像这样使用 express 函数 all():

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

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

更多详情见: http://expressjs.com/en/guide/routing.html

【讨论】:

  • 我尝试使用“使用”,但没有用,感谢“全部”
【解决方案2】:

最佳做法是分离关注点;因此,您应该有单独的函数来处理每个 HTTP 动词。这使得代码更容易维护。

【讨论】:

    猜你喜欢
    • 2012-08-29
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 2016-06-15
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多