这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战
这个 xxx post接口,你在接口路径上给我带一些参数吧 -----------某某某后端
参数不能放在body里面么,你这么干,为啥不直接用get方式请求 -----------某某某前端
好像我们一直都认为,GET 请求参数放在url上,POST 请求参数放在body上;
但是,如果在 GET 请求的body里加一些参数,在 POST 请求的url上加一些参数,好像也不是不行?
那么,GET 和 POST 有啥区别?看看W3C怎么说:
如果我们将参数放在 GET 请求的 Body 里(技术上是可行的),上图的很多比较是不是没有意义了?什么安全性,数据类型、数据长度的限制,不都是空话了么?
它们到底有什么不同?🤔🤔🤔🤔
提前小结
本质没有不同:「GET 和 POST 只是 HTTP 协议中的两种请求方式,但是 HTTP 的底层是 TCP/IP,所以 GET 和 POST 的底层也是 TCP/IP,他们能做的事情基本是一样的。」
这句话好像有点废,就跟地球上的已知有机生物都是碳基一样,有一点过于追求本质了 🤔🤔🤔
但也会引起一些思考:
-
是谁导致了它们的差别,或者说谁规定的?
-
如果同样一个请求数据(都有url参数,都有 request body),分别使用 GET 和 POST 发送,会有什么区别?
-
什么场景下使用 GET,又什么场景下使用 POST
HTTP -> 规则管理员
看过一个很形象的比喻:在网络的世界中,TCP就像是汽车,我们用TCP来运输数据,它是可靠的。但如果马路上都是一模一样的汽车,是不是会有一点不太好?比如,救护车和普通汽车就不能是一样的,得明显区分开;送紧急物资的汽车,不能被大货车堵住。为了避免这样的情况发生,HTTP充当规则管理员,给这些TCP汽车贴上了标签,有GET、POST、PUT等等;HTTP规定,GET类型的汽车,运送的数据要放在车顶上(url上);POST类型的汽车,运送的数据要放在车厢里(request body),并且车厢还有好几个规格(content-type)。
-
通常说,GET 请求的参数大小是有限制的,最大为2KB?
答:HTTP 并没有规定 GET 请求的大小,是浏览器基与自身性能提出的限制;原因也很好理解,如果,一个GET类型的汽车,在马路上装着大量的数据一直跑来跑去,对马路的压力是不是很大呢~
**: 是HTTP提出了一些规定,用于规范一些数据的交互行为,但是像浏览器、服务器、框架等,会基于自身的某些因素,另外添加、调整一些规则
show me the code
实验:(下篇更新)
在Node环境下,使用同一请求数据(请求报文),分别使用 GET 和 POST 发送
由于突然有事,剩下的放到下一篇文章更新 😭😭😭😭😭