为什么HTTP动词POST称为POST?

时间:2012-04-18 21:46:28

标签: http rest post

其他动词对我来说都有意义,但我没有太多关于“post”作为动词的背景。它是否像邮局中的帖子(这有点意义,虽然看起来像是一段时间)或者像公告板上的帖子一样(对我来说不太有意义)?有谁知道谁决定“POST”以及为什么选择它?

3 个答案:

答案 0 :(得分:15)

好吧,“帖子就像在公告板上发帖”非常接近答案,我想。最后,这正是这种方法设计的功能之一。 POST始终意味着将内容发布到某种“工厂”以供其处理 - 否则您只能使用PUT。我们来看看RFC2616, Section 9.5

  

POST方法用于请求原始服务器接受   请求中包含的实体作为新的下属   请求行中的Request-URI标识的资源。 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这个词的第3个定义)的一些含义 - 据此,作为动词的帖​​子可能意味着

  • 邮寄(信件或包裹)
  • 通知最新消息
  • 将(项目)转移到记账簿中的分类帐
  • 在(分类帐)中进行必要的输入

这正是POST所做的(比喻)。如果您想发送电子邮件,请让您的电子邮件提供商处理它​​,然后通知您有关状态的信息。这也是PUTPOST之间的区别:如果客户负责处理资源,则使用PUT(因为您知道要放什么以及放在哪里) 。

因此,从理论上讲,如果您知道要发送电子邮件的人的IP地址,您就不需要提供商为您找到这些内容。但是现在,你知道要放什么,但不完全 。所以在这种情况下,您使用POST。您'告知服务器最新消息',服务器决定放置它的位置。因此,您可以将其视为“将项目转移到已经存在的资源”(如论坛中的某个主题或其他内容) - 您只想添加一些内容。

我希望这有任何意义......

答案 1 :(得分:1)

POST方法用于请求源服务器接受请求中包含的实体,作为请求行中Request-URI标识的资源的新下级。 POST旨在允许统一的方法来涵盖以下功能:

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

W3 / POST

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

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

IBM / REST

当我们进行POST时,我们确实在发送新数据(创建资源)但不会获取它或调用更新或要求粉碎我们的旧documnet。

答案 2 :(得分:0)

我不认为发布'发布信件'的帖子非常有用。 POST请求毕竟是包含数据的消息。关于谁,动词来自HTTP,所以起源将是Tim Berners-Lee在1995年写的Html规范。