GET 请求应该存储到数据库吗?

Should GET requests store to database?

我了解到,如果您要修改数据库,则不应使用 GET 请求。那么您将如何记录有关您网站的分析?

例如,我想在有人访问某个页面时记录页面浏览量。我需要更新数据库中的 views = views + 1。这可以吗,尽管使用了 GET 请求,还是有另一种技术?当然,并非每个请求都应该是 POST 请求。

关于如何使用 POST 与 GET 的一般建议出现在 23 年前的 RFC 1945 中:

The GET method means retrieve whatever information (in the form of an entity) is identified by the Request-URI.

POST is designed to allow a uniform method to cover the following functions:

  • Annotation of existing resources;
  • Posting a message to a bulletin board, newsgroup, mailing list, or similar group of articles;
  • Providing a block of data, such as the result of submitting a form [3], to a data-handling process;
  • Extending a database through an append operation.

这些准则至今仍然有效,但它们涵盖了用户页面请求的主要目的。

增加查看计数器的行为与请求的主要目的有关,即查看页面内容。实际上,用户很可能没有意识到正在进行此数据库更新。

(当然,您必须预料到当用户浏览浏览器历史记录、填充缓存或蜘蛛抓取您的页面时,您会收到重复的请求。如果 POST 请求,则不会出现这种情况制作完成。)

没关系。

当您发出 POST 请求时,您实际上是在等待 POST 参数的到来,并根据从浏览器获得的参数构建数据库插入查询。 在 GET 请求上,您实际上实现了自己的业务逻辑,因此用户永远不会知道旁边发生了什么。

最后,其实有时候你可以做一些事情,违反规则的事情,规则是好的,但我们不能不遵守它们,这就是我们之所以为人的原因,如果我们严格遵守所有规则,会很麻烦。