Http 定义了与服务器交互的不同方法,最基本的方法有 4 种,分别是 POST,GET,PUT,DELETE;而 PATCH 是后来新增的方法。
URL 全称是资源描述符,我们可以这样认为:一个 URL 地址,它用于描述一个网络上的资源,而 HTTP 中的 POST,GET,PUT,DELETE,PATCH 就对应着对这个资源的创建,查看,创建或更新,删除,部分更新等五种操作。
在介绍五种方法的含义之前,先来理解幂等的含义:
幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。在编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“setTrue()”函数就是一个幂等函数,无论多次执行,其结果都是一样的,更复杂的操作幂等保证是利用唯一交易号(流水号)实现。
HTTP 协议定义了一组方法(又称为请求方式),用于指示客户端要对资源执行的操作。主要的 HTTP 方法包括:
一、GET
根据 HTTP 规范,GET 用于信息获取,而且是安全的和幂等的。
GET 请求是安全的。所谓安全是指不管进行多少次操作,资源的状态都不会改变。该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。
功能:请求获取指定资源的表示。GET 方法用于从服务器获取数据,不应该改变服务器上的资源状态。
特点:安全的、幂等的(多次相同的 GET 请求应返回相同的结果)。
二、POST
根据 HTTP 规范,POST 一般用于创建数据,不是安全和幂等的。
POST 请求既不是安全的,也不是幂等的,比如常见的 POST 重复加载问题:当我们多次发出同样的POST 请求后,其结果是创建出了若干的资源。
功能:向指定资源提交数据,用于创建或更新资源。POST 方法可能会导致服务器上的资源状态发生改变。
特点:非幂等的(多次相同的 POST 请求可能会创建多个资源或重复操作)。
三、PUT
PUT 一般用于创建或完整更新数据,而且是安全和幂等的。
PUT 请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的 update 操作一样,用来修改完整的数据内容,但是不会增加数据的种类等,也就是说无论进行多少次 PUT 操作,其结果并没有不同。
功能:更新指定资源的表示,或者创建资源(如果资源不存在的话)。PUT 方法会用请求中的数据替换指定资源的现有内容。
特点:幂等的(多次相同的 PUT 请求将产生相同的结果)。
四、DELETE
DELETE 一般用于删除数据,而且是安全和幂等的。
DELETE 请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的 delete 操作,无论进行多少次 DELETE 操作,其结果并没有不同。
功能:请求删除指定的资源。
特点:幂等的(多次相同的 DELETE 请求应产生相同的结果,尽管删除操作可能会导致资源不存在)。
五、PATCH
PATCH 一般用于更新部分数据,不是安全和幂等的。
PATCH 请求是对 PUT 请求的补充,一般用来对已知资源部分更新,是后来新出的标准,GitHub Api 也开始使用。
功能:对资源进行部分修改。与 PUT 不同,PATCH 方法只需提交修改的数据,而不是整个资源。
特点:非幂等的(多次相同的 PATCH 请求可能产生不同的结果)。
六、HEAD
功能:获取指定资源的元数据(如头部信息),不获取资源主体。HEAD 方法与 GET 方法类似,但不返回资源主体部分。
特点:安全的、幂等的。
七、OPTIONS
功能:查询服务器支持的 HTTP 方法。OPTIONS 方法用于描述目标资源的通信选项。
特点:安全的、幂等的。
八、TRACE
功能:回显服务器收到的请求,用于诊断和调试。TRACE 方法用于将服务器收到的请求报文原封不动地返回给客户端。
特点:安全的、幂等的。
九、CONNECT
功能:将请求的通道建立为一个透明的 TCP 通道,用于 SSL/TLS 连接等。CONNECT 方法用于创建一个隧道,用于在客户端和服务器之间传递数据。
特点:通常与 HTTPS 相关,用于代理服务器。
这些方法提供了不同的操作功能,允许客户端与服务器之间进行各种交互,满足 Web 应用程序的需求。
互联网协议 第4.4章 http协议-HTTP的方法有哪些