GET 和 POST 有啥区别?(上)

123 阅读3分钟

这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战

这个 xxx post接口,你在接口路径上给我带一些参数吧 -----------某某某后端

参数不能放在body里面么,你这么干,为啥不直接用get方式请求 -----------某某某前端

好像我们一直都认为,GET 请求参数放在url上,POST 请求参数放在body上;

但是,如果在 GET 请求的body里加一些参数,在 POST 请求的url上加一些参数,好像也不是不行?

那么,GET 和 POST 有啥区别?看看W3C怎么说:

比较 GET 与 POST

如果我们将参数放在 GET 请求的 Body 里(技术上是可行的),上图的很多比较是不是没有意义了?什么安全性,数据类型、数据长度的限制,不都是空话了么?

它们到底有什么不同?🤔🤔🤔🤔

提前小结

本质没有不同:「GET 和 POST 只是 HTTP 协议中的两种请求方式,但是 HTTP 的底层是 TCP/IP,所以 GETPOST 的底层也是 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 发送

由于突然有事,剩下的放到下一篇文章更新 😭😭😭😭😭