它们似乎都在向体内的服务器发送数据,那么,什么使它们不同呢?
HTTP PUT:
PUT将文件或资源放在特定的URI上,并确切地放在该URI上。如果该URI上已经有文件或资源,则PUT会替换该文件或资源。如果那里没有文件或资源,PUT将创建一个。PUT是幂等的,但矛盾的是PUT响应不可缓存。
HTTP POST:
POST将数据发送到特定的URI,并期望该URI上的资源可以处理请求。此时,Web服务器可以确定在指定资源的上下文中如何处理数据。POST方法不是幂等的,但是只要服务器设置适当的Cache-Control和Expires标头,POST响应就可以缓存。
官方HTTP RFC指定POST为:
POST和PUT之间的区别:
RFC本身解释了核心差异:
POST和PUT请求之间的根本区别体现在Request-URI的不同含义上。POST请求中的URI标识将处理封闭实体的资源。该资源可能是一个数据接受过程,某个其他协议的网关或一个接受注释的单独实体。相比之下,PUT请求中的URI标识请求中包含的实体-用户代理知道要使用的URI,并且服务器不得尝试将请求应用于其他资源。如果服务器希望将该请求应用于其他URI,则它必须发送301(永久移动)响应;然后,用户代理可以自行决定是否重定向请求。
此外,更简洁一点的是RFC 7231第4.3.4节PUT状态(添加了强调),
4.3.4。放
PUT方法请求目标资源的状态为请求消息有效负载中包含的表示形式
created
或replaced
具有该状态。
使用正确的方法,除了无关的:
REST ROA vs SOAP的一个好处是,当使用HTTP REST ROA时,它鼓励正确使用HTTP动词/方法。因此,例如,仅当您想在该确切位置创建资源时才使用PUT。而且,您永远不会使用GET创建或修改资源。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句