HTTP中的Get和Post的区别以及幂等性探究

Http定义了与服务器交互的不同方法,最基本的方法有4种:GET,POST,PUT,DELETE 。URL全称是资源描述符,可以理解成:一个URL地址,用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应这个资源的增,删,改,查四个操作。一般GET用于获取查询资源信息,而POST一般用于更新资源信息。


HTTP请求方法

幂等性

  • HTTP幂等方法,是指无论调用这个URL多少次,都不会有不同的结果的HTTP方法。
  • 值得注意,幂等性指的是作用于结果而非资源本身。可能某个方法可能每次会得到不同的返回内容,但并不影响资源,这样的也满足幂等性,例如get服务器当前时间
HTTP GET方法
  • 用于获取资源,不管调用多少次接口,结果都不会改变,所以是幂等的。
  • 若接口用于获取当前时间,它获取的是服务器当前时间,本身不会对资源产生影响,因此满足幂等性
HTTP POST方法
  • POST是一个非幂等方法,它会对资源本身产生影响,每次调用都会有新的资源产生,因此不满足幂等性
HTTP PUT方法
  • PUT方法直接把实体部分数据替换到了服务器的资源,但我们多次调用它时,只会产生一次影响,即有相同结果的HTTP方法,所有满足幂等性
HTTP PATCH方法
  • PATCH方法是非幂等的,因为它提供的实体需要根据程序或其他协议的定义,解析后在服务器上执行,以此来修改服务器上的资源。也就是若反复提交,程序可能执行多次,对服务器资源可能造成额外影响。
HTTP DELETE方法
  • DELETE方法用于删除资源,会将资源删除,但调用一次和调用多次的影响是相同的,因此也满足幂等性

根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。

  • 这里的安全并不是网络安全上的信息安全,而是指该操作作用于获取信息,而不是修改信息。即GET请求一般不产生副作用,仅仅获取资源信息,就行数据库查询一样,不会修改增加数据,不会影响资源的状态

根据HTTP规范,POST表示可能修改服务器上的资源的请求

  • 例如注册用户信息时post提交表单请求,将用户信息添加到服务器数据库上,即对资源进行了修改


    GET和POST区别

你可能感兴趣的:(HTTP中的Get和Post的区别以及幂等性探究)