基本概念
客户端与服务器直接通信通过超文本传输协议http。
客户端和服务器之间进行请求-相应时,最常用的方法是get和post。
get:从指定的资源请求数据。
post:根据报文主体对指定的资源做出处理。
get与post的区别:
- get只用来从服务器端获取数据,post用于上传或者修改数据
- get参数通过URL地址栏传输,post参数在body中,通过报文传输,安全性post高。因而处理敏感机密数据时不应该使用get
- get大小受限于浏览器和服务器,post理论上没有限制部分浏览器会缓存get的response,因而相同的get会得到相同的response,即便是服务器端的数据已经改变。同时get请求可能会保留在浏览器的历史记录中。post不会被浏览器缓存,也不会被保留在浏览器的历史记录中
- get请求可能被收藏为书签,而post不会被收藏为书签
幂等(Idempotence)
同一个请求方法执行多次和仅执行一次的效果完全相同。
get仅用于请求资源,是幂等的,而post不是幂等的。
所以当刷新时,get可以重新发送请求,而post则会遇到浏览器的提醒,因为这是另外一次请求。结果可能会不一样。
此处可用于当失去连接时重新发送的情况。
副作用:
当发送一条请求时,网上的资源没有发生修改,则认为这个请求时无副作用的。比如注册是有副作用的,浏览是无副作用的。
HTML Method
- GET:无副作用,幂等
- PUT:副作用,幂等
- POST:副作用,非幂等
- DELETE:副作用,幂等
协议和实现之间还有一定距离。
网友评论