GET,POST,PUT,DELETE的区别
RGET 下载,PUT 更新,POST 新增,DELETE 删除,区别如下表格所示:HTTP方法 数据处理 说明
POST Create 新增一个没有id的资源
GET Read 取得一个资源
PUT Update 更新一个资源。或新增一个含id资源(如果id不存在)
DELETE Delete 删除一个资源
PUT,DELETE操作是幂等的。所谓幂等是指不管进行多少次操作,结果都一样。比如我用PUT修改一篇文章,然后在做同样的操作,每次操作后的结果并没有不同,DELETE也是一样。顺便说一句,因为GET操作是安全的,所以它自然也是幂等的。
POST操作既不是安全的,也不是幂等的,比如常见的POST重复加载问题:当我们多次发出同样的POST请求后,其结果是创建出了若干的资源。
安全和幂等的意义在于:当操作没有达到预期的目标时,我们可以不停的重试,而不会对资源产生副作用。从这个意义上说,POST操作往往是有害的,但很多时候我们还是不得不使用它。
还有一点需要注意的就是,创建操作可以使用POST,也可以使用PUT,区别在于POST 是作用在一个易做图资源之上的(/uri),而PUT操作是作用在一个具体资源之上的(/uri/xxx),再通俗点说,如果URL可以在客户端确定,那么就使用PUT,如果是在服务端确定,那么就使用POST,比如说很多资源使用数据库自增主键作为标识信息,而创建的资源的标识信息到底是什么只能由服务端提供,这个时候就必须使用POST。
由于都是要传送数据,且数据格式相同(即使数据格式不同,只要能提取出相应数据)。使用的时候难免出现张冠李戴,将get数据用来存储、将post数据用来检索返回数据。但是二者还是有区别的(主要是根据其用途而“人为”[注3]造成的),get的长度易做图在2048字节(由浏览器和服务器易做图的,这是目前IE的数据,曾经是1024字节),很大程度上易做图了get用来传递“存储数据”的数据的能力,所以还是老老实实用来做检索吧;post则无此易做图(只是HTTP协议规范没有进行大小易做图,但受限于服务器的处理能力),因此对于大的数据(一般来说需要存储的数据可能会比较大,比2048字节大)的传递有天然的优势,谁让它是 nature born post 呢。
get、post、put、delete、head 请求方式的区别
作用:获取服务端的资源
特点:
1、GET方式提交的数据最多只能是2KB字节;
2、数据通过浏览器地址栏进行传递,用户信息会暴露在浏览器地址,不安全
形式:url?key1=value1&key2=value2,即:
将数据按照key=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接
@POST
作用:用于提交请求,可以向服务端更新或者创建资源
特点:理论上对提交的数据大小没有易做图;数据通过http协议的body体进行传递,不会暴露用户信息,相对安全
@PUT
作用:用于向指定的 URI 传送更新资源,与post的使用很相似
查看 URI 与 URL 的区别
什么时候用 PUT,什么时候用 POST
当需要以更新的形式来修改某一具体资源的时候,如何判断用 PUT 还是 POST 呢
1、每次更新提交相同的内容,结果都一致,用 PUT
2、每次更新提交相同的内容,最终的结果不一致的时候,用 POST
@DELETE:
作用:用于删除服务端的资源
@HEAD:
作用:只请求页面首部,响应报文中没有实体的主体部分(没有body体)