get-post区别
Jul 17, 2016
鉴于前几天又看过的一篇关于 “get与post区别的文章”, 对于这个老生常谈的问题,我记录下自己的总结。
- 就浏览器表现来看,get是直接将参数展现在地址栏上,有一定的长度限定, 大概2kb?4kb?反正是有较小的长度限定,当然除了传大量数据,一般的get请求是没问题的; 而post则将参数放到了request body中,并没有来地址栏中展现,参数内容长度则可以很大,适合传输有大量数据的请求。
- 就语义化而言,get是直接发一次包进行请求,是幂等的,表示拉取数据,主要是进行读操作;而post则是非幂等,发两次包,一次头部,第二次包含了参数的body,表示数据存在更改,包括新建、更新、删除操作。
- 就特殊的功用性而言,跨域常用的jsonp本质上就是get请求进行回调; 上传文件需要的 multipart/form-data, 就必须是post请求。
- 编码与转译, get需要对特殊符号进行编码和转译,比如:encodeURIComponent(), 后端才能得到正确的数据; 而post则浏览器进行这项操作。
- get方式可以有页面缓存, 可以进行回退/前进操作, 而post没有。