为什么HTTP动词POST被称为POST?

16

其他动词我都能理解,但是作为动词的“post”我没有太多上下文。它是像邮局一样的"post"(这有些道理,尽管似乎有点牵强),还是像公告板上的"post"(我不太理解)?有人知道是谁决定使用“POST”这个词,并且为什么选择它吗?


1
因为“GIVE”听起来不够吸引人。躲避 - BoltClock
@BoltClock'saUnicorn是指“给它一个...”吗? - Kelsey Gilmore-Innis
1
@JohnSheehan 嗯,实际上这是一个HTTP方法,而不是HTTP动词 :-P - Darrel Miller
3个回答

15

嗯,“像公告栏上发布帖子一样发布”可能是最接近答案的描述了。最终,这正是该方法设计的功能之一。POST始终用于将内容发布到某个“工厂”以供其处理,否则您可以使用PUT。让我们来看一下RFC2616第9.5节

POST方法用于请求源服务器接受作为请求中封装的实体作为标识Request-Line中的资源的新附属物。 POST旨在允许一个统一的方法覆盖以下功能:

  - 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, to a data-handling process;

  - Extending a database through an append operation.
当然,这不是为什么称之为“POST”的确切定义,但我认为这可能会给出一些有关其背后思想的线索。
也许我们还可以看看“post”这个词的一些含义(http://www.thefreedictionary.com/Post,第三个定义)-根据那里的说法,“post”作为动词的意思可以是:
将信件或包裹邮寄 告诉最新消息 将物品转移到记账中的分类帐上 在分类帐中进行必要的记录
这正是 POST 所做的(隐喻)。如果您想发电子邮件,则让您的电子邮件提供商处理它,然后通知您状态。这也是 PUT 和 POST 之间的区别:如果客户端负责处理资源,则使用 PUT (因为您知道要放置什么以及放置在哪里)。
因此,理论上,如果您知道要发送电子邮件的人的IP地址,您就不需要您的提供商为您查找此内容。但现在,您知道要放什么,但不知道放在哪里。因此,在这种情况下,您使用 POST 。您“告诉服务器最新消息”,而服务器会决定将其放在哪里。因此,您可以将其视为将“项目”转移到已经存在的资源上(例如论坛中的线程或其他内容),您只是想追加一些东西。
我希望这有任何意义...

这是一个很棒的解释为什么使用POST方法是有意义的。我想,除非Tim Berners-Lee亲自出现,否则这就是最权威的解释了... - Kelsey Gilmore-Innis
@KelseyInnis 很高兴能帮忙 :) 我也希望伯纳斯-李先生不会因此而大笑... :-P - Quasdunk
1
我曾经一度以为自己在english.stackexchange.com上。 - Sripathi Krishnan

1

POST方法用于请求源服务器将请求中封装的实体作为资源标识符(Request-Line)所标识的资源的新下属接受。POST旨在允许一种统一的方法来覆盖以下功能:

  • 注释现有资源;
  • 向公告板、新闻组、邮件列表或类似文章组发布消息;
  • 提供数据块,例如提交表单的结果,给数据处理过程;
  • 通过追加操作扩展数据库。

W3/POST

REST要求开发人员明确使用HTTP方法,并以与协议定义一致的方式使用。这个基本的REST设计原则建立了创建、读取、更新和删除(CRUD)操作与HTTP方法之间的一对一映射。根据这个映射:

  • 要在服务器上创建资源,请使用POST。
  • 要检索资源,请使用GET。
  • 要更改资源的状态或更新它,请使用PUT。
  • 要删除资源,请使用DELETE。

IBM / REST

当我们进行POST操作时,实际上是在发送新数据(创建资源),而不是获取它或调用更新或请求删除旧文档。


0

我认为“post”作为“寄信”的意思并不算太牵强。毕竟POST请求是包含数据的消息。至于动词来源,它们来自HTTP,因此起源可以追溯到1995年Tim Berners-Lee编写的HTML规范。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接