专栏首页关忆北.常见请求方式区别

常见请求方式区别

常用的请求方法里面GET请求和POST请求我们都非常熟悉了,今天来谈谈POST,PUT以及PATCH,在了解这些之前我们先理解一个概念 幂等性:

幂等性:

HTTP协议本身是一种面向资源的应用层协议,但对HTTP协议的使用实际上存在着两种不同的方式:

  1. 一种是RESTful的,它把HTTP当成应用层协议,比较忠实地遵守了HTTP协议的各种规定;
  2. 另一种是SOA的,它并没有完全把HTTP当成应用层协议,而是把HTTP协议作为了传输层协议,然后在HTTP之上建立了自己的应用层协议。

PATCH 与 PUT 属性上的一个重要区别还在于:PUT 是幂等的,而 PATCH 不是幂等的。 幂等是一个数学和计算机学概念,在计算机范畴内表示一个操作执行任意次对系统的影响跟一次是相同。

GET方法用于获取资源,不应有副作用,所以是幂等的。比如:GET http://www.bank.com/account/123456,不会改变资源的状态,不论调用一次还是N次都没有副作用。请注意,这里强调的是一次和N次具有相同的副作用,而不是每次GET的结果相同。GET http://www.news.com/latest-news这个HTTP请求可能会每次得到不同的结果,但它本身并没有产生任何副作用,因而是满足幂等性的。

DELETE方法用于删除资源,有副作用,但它应该满足幂等性。比如:DELETE http://www.forum.com/article/4231,调用一次和N次对系统产生的副作用是相同的,即删掉id为4231的帖子;因此,调用者可以多次调用或刷新页面而不必担心引起错误。

POST和PUT的区别容易被简单地误认为“POST表示创建资源,PUT表示更新资源.但实际上两者都可以用来创建或是更新数据.单从技术上来说,他们并没有什么区别.但是在HTTP规范中POST是非等幂的,多次调用会产生不同的结果,比如:创建一个用户,由于网络原因或是其他原因多创建了几次,那么将会有多个用户被创建.而PUT id/456则会创建一个id为456的用户,多次调用还是会创建的结果是一样的,所以PUT是等幂的.

PATCH一般是用来局部更新资源的,假设我们有一个UserInfo,里面有userId, userName, userGender等10个字段。可你的编辑功能因为需求,在某个特别的页面里只能修改userName,这时候的更新怎么做?

人们通常(为徒省事)把一个包含了修改后userName的完整userInfo对象传给后端,做完整更新。但仔细想想,这种做法感觉有点二,而且真心浪费带宽(纯技术上讲,你不关心带宽那是你土豪)。

于是PATCH诞生,只传一个userName到指定资源去,表示该请求是一个局部更新,后端仅更新接收到的字段。

而PUT虽然也是更新资源,但要求前端提供的一定是一个完整的资源对象,理论上说,如果你用了PUT,但却没有提供完整的UserInfo,那么缺了的那些字段应该被清空.另外PUT会有一个create操作,加入更新的id不存在,会进行创建,而PATCH则没有这个.

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://blog.csdn.net/weixin_42313773复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • post和get请求方式以及区别

    1.一些枯燥的概念: Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。 URL全称是资源描述符,我们可以...

    wangxl
  • Spring RestTemplate中几种常见的请求方式

    当我们从服务消费端去调用服务提供者的服务的时候,使用了一个很好用的对象,叫做RestTemplate,当时我们只使用了RestTemplate中最简单的一个功能...

    田维常
  • Spring RestTemplate中几种常见的请求方式

    在Spring Cloud中服务的发现与消费一文中,当我们从服务消费端去调用服务提供者的服务的时候,使用了一个很好用的对象,叫做RestTemplate,当时我...

    江南一点雨
  • GET 请求和 POST 请求的区别

    ① get 请求用来从服务器上获取资源;而 post 请求通常是用来向服务器提交数据的;

    happyJared
  • Http常见请求头知识

    高大北
  • 常见的限流方式

    什么是限流呢?限流是限制到达系统的并发请求数量,保证系统能够正常响应部分用户请求,而对于超过限制的流量,则通过拒绝服务的方式保证整体系统的可用性。

    越陌度阡
  • HttpURLConnection 使用POST请求方式

    八神太一
  • HTTP接口测试常见请求类型

    python实现Content-Type类型为application/x-www-form-urlencoded发送POST请求

    嘉美伯爵
  • 常见的重定向方式

    第一种:使用==rewrite==指令,通过正则匹配所有的URI后再去掉开头第一个/(反斜线)。

    匿名用户的日记
  • Python与常见加密方式

    数据加密与解密通常是为了保证数据在传输过程中的安全性,自古以来就一直存在,古代主要应用在战争领域,战争中会有很多情报信息要传递,这些重要的信息都会经过加密,在发...

    润森
  • 请求转发和请求重定向有什么区别?

    在 Java 中,跳转的实现方式有两种:请求转发和请求重定向,但二者是完全不同的,所以我们今天就来盘它。 请求转发和请求重定向主要区别,包含以下 5 点:

    PHP开发工程师
  • 请求转发和重定向区别

    名字是乱打的
  • HTTP中GET/POST请求的区别

    HTTP 请求方法有:HEAD、PUT、DELETE、OPTIONS、CONNECT

    仙士可
  • get和post请求的区别

    网上也有文章说:get和post请求实际上是没有区别,大家可以自行查询相关文章(参考文章:https://www.cnblogs.com/logsharing/...

    崔笑颜
  • JS常见加密混淆方式

    前端江太公
  • 常见的for循环优化方式

    我们都经常使用一些循环耗时计算的操作,特别是for循环,它是一种重复计算的操作,如果处理不好,耗时就比较大,如果处理书写得当将大大提高效率,下面总结几条for循...

    Kevin_Zhang
  • 常见的鉴权方式

    JWT全称JSON Web Token, 一个JWT由三部分构成: Header, Payload, Signature。

    愤怒的小鸟

扫码关注腾讯云开发者

领取腾讯云代金券