使用上的区别
- GET 请求参数放在 URL 上,POST 请求参数放在请求体里
- GET 请求参数长度有限制,POST 请求的参数长度可以非常大
- POST 请求相对 GET 请求来说安全一点,因为 GET 请求参数在 URL 上,而且有历史记录
- GET 请求能缓存,POST 请求不能
本质区别
其实 HTTP 协议并没有要求 GET/POST 请求参数必须放在 URL 上或请求体里,也没有规定 GET 请求的长度,目前对 URL 的长度限制,是各家浏览器设置的限制。GET 和 POST 的根本区别在于:GET 请求是幂等的,而 POST 请求不是。
幂等性,指的是对某一个资源进行一次或多次请求都具有相同的副作用。例如搜索就是一个幂等的操作,而删除、新增则不是一个幂等操作。
由于 GET 请求是幂等的,在网络不好的环境中,GET 请求可能会重复尝试,造成重复操作数据的风险,因此,GET 请求一般用于无副作用的操作(如搜索),新增/删除等操作适用于 POST。