概念:
GET和POST是HTTP协议中的两种请求方式。
Http是基于TCP/IP的关于数据在万维网中如何通信的协议。
HTTP的底层就是TCP/IP。----> 因此GET/POST的底层也是TCP/IP。
比喻法:
传送渠道:
TCP就像是汽车,我们来基于汽车运输数据,相当的可靠。但是汽车一多,长得都是一模一样的汽车,很难区分出来。再加上汽车多,遭遇拥挤堵塞的情况很常见。这就要有一个交通行为规则,而HTTP就是一个交通规则。所以说开始采取措施:HTTP有很多请求方式,相当于有很多服务类别。可以对于汽车采取写标签的形式区分车辆类型,如果这个汽车是GET,就贴一个有GET的标签,并将传送的数据放到车顶上(都能看到,方便记录);如果这个汽车是POST,就在汽车贴POST的标签,并将传送的数据存放到车里面。
但是最主要的是有一个运输公司。不同的浏览器和服务器就是不同的运输公司。他们会管着装货和卸货的重量。他们会限制单词运输量来控制风险,数量太大对浏览器和服务器都有很大的负担。大多数浏览器会限制url的长度在24K字节,而服务器最多处理的是64K字节的url。如果你用GET服务,在车厢(request body 偷偷藏了数据),有的服务器会帮你卸货读书数据,而有的浏览器直接忽略。因此虽然GET有的时候可以带上request body ,但数据老是丢失,有的时候接收不到。
最大的区别就是:
GET产生了一个TCP数据包,POST产生了两个数据包。
也就是说,一个有GET标签的车辆只运输一趟数据就可以了,而POST来回运输两趟数据。
POST需要两步才能完成工作,时间上耗费的多些。但是:
1.GET和POST有自己的用义,不能随便混用。
2.发一次数据包和两次时间上基本差距不大。但在网络差的情况下,POST在传输两次数据包中,有非常大的优势