【问题标题】:What is the reason for using GET instead of POST in this instance?在这种情况下使用 GET 而不是 POST 的原因是什么?
【发布时间】:2019-09-23 02:49:16
【问题描述】:

我正在浏览 pg-promise-demo 的 Javascript 演示,我对 /api/users/:name 的路线有疑问。

在本地运行它,用户被输入到数据库中,但是这不是 POST 有什么原因吗?使用 GET 在数据库中创建用户有什么好处吗?

// index.js
// --------

app.get('/api/users/:name', async (req, res) => {
  try {
    const data = (req) => {
      return db.task('add-user', async (t) => {
        const user = await t.users.findByName(req.params.name);
        return user || t.users.add(req.params.name);
      });
    };
  } catch (err) {
    // do something with error
  }
});

为简洁起见,我将省略 t.users.findByName(name)t.users.add(name) 的代码,但它们使用 QueryFile 来执行 SQL 命令。

编辑:更新 pg-promise-demo 的链接。

【问题讨论】:

  • 就我个人而言,我想不出有什么理由——只是感觉如此错误和危险。我永远不会这样做,因为它只需要浏览一个 URL。我会建议 opening an issue 在那个 repo 上提出同样的问题......也许作者只是为了演示目的而这样做?即使是演示,也是一种糟糕的做法。

标签: node.js express pg-promise


【解决方案1】:

The reason is explained 就在该文件的顶部:

重要提示:

不要从这里重复使用代码的 HTTP 服务部分!

这是一个过度简化的 HTTP 服务,只有 GET 处理程序,因为:

  1. 这个demo是通过在浏览器中手动输入URL-s来测试的;
  2. 这里只关注适当的数据库层,而不是 HTTP 服务。

我认为很明显,您不应该遵循演示的 HTTP 实现,而应该只遵循它的数据库层。该演示的目的是教您如何在大型应用程序中组织数据库层,而不是如何开发 HTTP 服务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-14
    • 2018-07-03
    • 2017-05-17
    • 1970-01-01
    • 2020-11-03
    • 2013-04-23
    • 2019-02-07
    • 2013-06-29
    相关资源
    最近更新 更多