前置知识(使用过api文档的可略过)
认识get,post,put,delete方法
根据RESTful api(其实就是一种接口风格,大家公认的在开发中比较方便理解和使用,当然你也可以不遵守hhh,具体的请自行查阅)的约定:开发中使用
- get方法:查询数据
- post方法:提交数据
- put方法:修改数据
- delete方法:删除数据
通常,get方法携带查询参数给后台,通常写在params参数中,浏览器会把params的参数拼接到url中
post,put,delete方法携带请求体request body给后台,通常写在data参数中,浏览器不会把data中的数据拼接到url中。其实如果你不按RESTful风格来做,其实也可以在delete,put携带params参数
回归正题
为什么对get缓存
我们知道get方法是查询数据,查询数据就好比查新华字典,一个字在新华字典中的位置不会因为你查了它而使它发生改变,我们把类似这种特性叫做幂等性。显然post,delete,put都不具有这种特性。也就是说:增删查中只有查具有幂等性。
浏览器基于性能考虑会对get的获取的数据进行缓存。浏览器可以自动缓存 GET 请求的结果,特别是那些带有明确 Cache-Control 响应头的请求。由于参数已经包含在 URL 中,浏览器可以根据完整的 URL 来判断缓存的有效性,进而决定是否从缓存中提供资源。
为什么对get方法请求参数拼接到url上
可见性和可预测性:把参数放在 URL 中,使得整个请求变得透明和易于理解。任何人都可以通过查看 URL 就能知道请求的具体参数是什么,这对于调试、记录日志以及复制粘贴请求进行复现非常方便。