帖子和PUT方法之间的区别
PUT和POST方法之间的关键区别在于,PUT仅限于创建或更新操作,而后操作可能会执行任何类型的处理。与帖子不同,PUT操作只能对提供的URL标识的资源进行操作。无论URL如何,允许在任何服务器端资源上进行HTTP Post Processing。
邮政操作应优先考虑从URL标识的资源服从资源。宁静的API和操作应在它们如何操纵资源并产生结果方面可以预测。
http put方法示例
想象一个飞行跟踪系统,用户在以下URL上查找美国航空公司123的状态:
www.example.com/ AA123
为了更新AA123的状态,Web服务对该URL执行了PUT操作。
PUT操作包括JSON或XML有效载荷,该有效载荷完全描述了新状态:
放置URL:www.example.com/flights/ aa123有效载荷:{“ status”:“ ontime”,“ gate”:“ b12”}
http put创建示例
现在,想象一下,我们需要为加拿大航空789航班创建一个新的条目。
描述该航班的URL尚不存在,但是我们知道创建后的URL将是:
www.example.com/ ac789
由于我们在请求创建之前就知道资源的所需URL,因此我们必须使用PUT操作。
放置URL:www.example.com/flights/ ac789有效载荷:{“状态”:“ late”,“ gate”:“ c17”}HTTP邮政方法示例
当客户端请求创建资源时,它并不总是知道服务器将分配给资源的网址。
当使用后操作用于在服务器上创建资源时,将创建资源作为邮政操作提供的URL的下属资源。这将HTTP与PRET和POST方法相比,因为PUT操作需要创建或更新资源的确切URL。
在创建其创建之前,不知道资源的确切URL是数据库驱动的应用程序中的常见场景,在数据库驱动的应用程序中,新创建的资源是由将资源数据写入表格后生成的值确定的。
基于密钥的标识符属于此类别。
如果您需要创建从属于提供的URL的资源,则应使用POST方法,而不是HTTP PUT方法。
例如,要创建一个新客户,请使用HTTP协议的邮政方法。创建新客户所需的所有信息均以JSON或XML提供在请求的有效载荷中:
发布URL:www.example.com/customerspayload:{“ name”:“ joe”,“ age”:“ 29”,“ city”:“ ajax”}
http帖子创建示例
当服务器完成此请求时,它会创建一个新的URL,该URL独特地标识了新资源。
以下示例显示了成功的后运营后,该新客户为数据库驱动的应用程序生成的可能的URL:
www.example.com/customers/ j567
当邮政操作创建新的URL时,REST要求将新的URL作为位置标头发送回呼叫程序。这允许调用程序使用POT操作进行将来的更新。
这就是为什么PUT操作和后操作之间的区别通常被用作:创建对象,请使用帖子。放置应用于更新。这是对HTTP动词目的的过分简化,绝不应该将HTTP方法映射到基于SQL的CRUD操作上。但是,作为高级简化,它是允许的。
发帖并放置势力
HTTP协议在PUT操作上的位置之一是必须是愿意的。势力从来都不是邮政操作的要求。
为了使势力可以调用一次或100次操作,并且服务器上的结果将相同。
放置和发布方法的示例示例
例如,我执行一个PUT操作,将我的银行帐户余额设置为100美元。即使我执行100次操作,最终结果也是100美元的余额。
相比之下,如果我执行100个邮政操作,每个操作将我的帐户余额提高10%,则每种交互的结果会产生不同的结果。这不是一个掌握的操作。
一个PUT方法仅允许掌握操作。邮政方法不受能力要求。

放置是势力。帖子不是。
我应该使用put或张贴吗?
HTTP规范RFC 7231非常清楚,PUT方法仅用于执行IDEMTOTENT创建或更新操作:
PUT方法请求要求创建目标资源状态或用由请求消息有效负载中包含的表示形式定义的状态来创建或替换。
与PUT相反,邮政操作不仅限于创建和更新。 HTTP规范还说,在接收后调用后,服务器可以选择并实施任何逻辑以支持请求:
POST方法要求目标资源过程根据资源自己的特定语义包含在请求中的表示形式。
这就是为什么许多Restful API广泛使用HTTP协议的POST方法的原因。如果函数或服务未整齐地映射到HTTP协议的GET,PUT,补丁或删除方法中,则使用了POST方法。
当Software Architects构建和设计一个RESTFUL API时,对于他们来说,尊重使用HTTP协议的各种方法的方式很重要。这包括知道何时使用HTTP与后操作之间的区别。
| HTTP帖子与放置比较图表 | ||
|---|---|---|
| 放 | 邮政 | |
| 需要资源URL | 是的 | 不 |
| 安全的 | 不 | 不 |
| 愿意 | 是的 | 不 |
| 用例 | 创建和更新 | 表格处理,创建,博客文章,处理 |
| 响应代码 | 200,201,204 | 除了206 |
放,发布,获取和删除
超文本传输协议的第一个版本仅支持三种HTTP请求方法:获取,发布和头部。
HTTP GET方法简单地检索了请求的资源。
头部操作只是获取有关资源的标题和元数据。
因此,在原始的HTTP规范中,数据的任何服务器端处理都是由帖子执行的。其中包括:
资源创建。
资源删除。
更新资源。
数据处理。
HTTP协议的更新版本添加了包括以下几种方法:
删除删除。
更新的补丁。
用于资源创建或更换。
这些附加的HTTP方法提供了清晰度,并减少了与HTTP Post方法相关的职责范围。 HTTP协议的演变还解释了为什么任何不整齐地符合删除,补丁或放置操作的请求落入了邮政域的域。与PUT不同,POST是HTTP协议的全部方法。

有9种常见的HTTP方法,包括PUT和发布。