在这种情况下使用 GET 而不是 POST 的原因是什么?

What is the reason for using GET instead of POST in this instance?

我正在浏览 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 命令。

编辑:将 link 更新为 pg-promise-demo。

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

IMPORTANT:

Do not re-use the HTTP-service part of the code from here!

It is an over-simplified HTTP service with just GET handlers, because:

  1. This demo is to be tested by typing URL-s manually in the browser;
  2. The focus here is on a proper database layer only, not an HTTP service.

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