先引入副作用和幂等的概念。
副作用 指对服务器上的资源做改变,搜索是无副作用的,注册是副作用的。
幂等 指发送 M 和 N 次请求(两者不相同且都大于1),服务器上资源的状态一致。注册10个和11个帐号是不幂等的,对文章进行更改10次和11次是幂等的。
在规范的应用场景上说,Get 多用于无副作用,幂等的场景,例如搜索关键字。Post 多用于副作用,不幂等的场景,例如注册。
在技术上说:
1.Get 请求能缓存,Post 不能
2。Post 相对 Get 安全一点点,因为Get 请求都包含在 URL 里,且会被浏览器保存历史纪录,可以被加到书签,Post 不会,但是在抓包的情况下都是一样的。
3.Post 可以通过 request body来传输比 Get 更多的数据,Get 没有这个技术
4.URL有长度限制,会影响 Get 请求,但是这个长度限制是浏览器规定的,不是 RFC 规定的
5.Post 支持更多的编码类型且不对数据类型限制
网友评论