get

post

对比
相对来说 get 是安全的,post 是不安全的,因为 get 的实现是无副作用的,post 一般情况是有副作用的。比如 get 用来获取某些列表数据,每次请求都会返回一样的数据。post 用来提交一项数据,每次请求都会在数据库中增加一列。
当然,并不是一定是这样的,因为这种规定是定义的,也就是说,get 是为了无副作用而使用的http 方法,但是你可以用 get 实现删除或者增加的功能。
我们来说一下幂等
幂等的意思就是同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的所以,在正确实现的条件下,?GET?,?HEAD?,?PUT?和?DELETE? 等方法都是幂等的,也都是安全方法
请求是否有主体
get 是属于没有主体的规范,可以说 get 请求是一个纯的 url 连接,只不过 url 可以携带一些信息被服务器读取,也可以成携带的信息是 query params
post 是有主体的请求规范,它可以传一个 body 过去
缓存
get 是可以缓存的规范,post 是不可以缓存的规范。 但是 get 和 post 都可以实现缓存,只要你愿意,post 也可以实现请求列表的接口
总结
get 和 post 没有什么安全和不安全的区别,只有安全和不安全的规范。 get 也可以添加 body,post 也可以在 api 后边加 query params 有些浏览器会自动将 get 的 请求体忽略,所以我们可以用 Postman?去试一试
还有一点,get 长度限制其实也是浏览器限制的
维基百科对于 https 加密的内容是这样说的,它会加密所有的报头和荷载内容,所以并没有 get 和 post 的区别
https://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%AE%89%E5%85%A8%E5%8D%8F%E8%AE%AE
|