HTTP是一种基于请求/响应的通信协议,客户端对服务器发出一个取得资源的请求,服务器将要求的资源响应给客户端,每次的联机只作一次请求/响应,是一种很简单的通信协议,没有请求就不会有响应。
在HTTP协议之下,服务器端是个健忘的家伙,服务器响应客户端之后,就不会记得客户端的信息,更不会去维护与客户端有关的状态,因此HTTP又称为无状态。
GET请求,顾名思义,就是向服务器取得(GET)指定的资源,在发出GET请求时,必须一并告诉服务器所请求资源的URL,以及一些标头(Header)信息。例如,一个GET请求的发送范例如图所示。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jcxIvhEm-1666234487318)(…/…/images/GET请求.jpg)]
POST请求,顾名思义,就是在请求时发布(POST)信息给服务器,对于大量或复杂的信息发送(如文件上传),基本上会采用POST来进行发送。一个POST发送的范例如图所示。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gkzT39ru-1666234487322)(…/…/images/POST请求.jpg)]
从功能面上,可以用以下方式来决定该选用GET或POST:
另外,还有另一个非功能面上的考虑,但其实也是HTTP当初在设计时区分GET与POST的目的之一,就是按请求是否为等幂(idempotent)操作来决定使用GET或POST。
所谓是否为等幂操作,就是请求的操作是否改变服务器状态,同一个操作重复多次,是否传回同样的结果。