JP *_*shy 54
不同之处在于PUT用于已知资源,因此用于更新,如 rfc2616中所述.
POST和PUT请求之间的根本区别体现在Request-URI的不同含义上.POST请求中的URI标识将处理所包含实体的资源.该资源可能是数据接受过程,某些其他协议的网关或接受注释的单独实体.相反,PUT请求中的URI标识请求附带的实体 - 用户代理知道URI的用途,并且服务器不得尝试将请求应用于其他资源.
然而,我确实根据名称来确定你来自哪里.
我通常会查看POST,因为它应该是处理我的请求内容的URI(在大多数情况下,params作为表单值),从而创建一个新资源,PUT作为我的请求主题的URI(/ users/1234),已经存在的资源.
我相信命名法可以追溯到很长一段时间,考虑早期的网络.有人可能希望将POST他们的消息发送到留言板,然后PUT在日后将其他内容添加到他们的消息中.
HTTP方法和CRUD之间没有严格的对应关系.这是一些框架采用的约定,但它与REST约束无关.
甲PUT请求要求服务器替换无论是在给定的URI与封闭表示,完全无视当前内容.一个很好的类比是mvshell中的命令.如果它不存在,它会在目标创建新文件,或者替换存在的任何文件.在任何一种情况下,它都完全忽略了那里的任何东西.只要您发送完整的表示,您就可以使用它来创建,也可以使用它来更新内容.
POST要求目标资源根据预定义的规则处理有效负载,因此它是用于任何尚未通过HTTP协议标准化的操作的方法.这意味着POST你可以做任何你想做的事情,只要你没有从其他方法复制功能 - 例如,POST当你应该使用时进行检索GET- 并且你正确地记录它.
因此,根据具体情况,您可以同时使用它们进行创建和更新,但是PUT您必须对API中的所有内容具有一致的语义,并且您无法进行部分更新,并且POST您可以执行任何您想要的操作,只要你记录它是如何工作的.
当且仅当客户端知道新资源的可能URI时,才应将PUT用于创建.新URI可以由服务在资源表示中公布.例如,服务可以提供某种提交形式并在其上指定动作URI,其可以是新资源的预先填充的URI.在这种情况下是,如果初始PUT请求成功创建资源,则PUT请求将仅替换它.
可以使用POST进行更新,但从未说POST仅用于"创建"操作.
| 归档时间: |
|
| 查看次数: |
41575 次 |
| 最近记录: |