Get and Post
两种请求对比
HTTP 定义了与服务器交互的不同方法,最基本的4种分别是GET
、POST
、PUT
、DELETE
。
URL 全称是资源描述符,我们可以这样认为:
一个 URL 地址,它用于描述一个网络上的资源,而 HTTP 中的GET
,POST
,PUT
,DELETE
就对应着对这个资源的查
,改
,增
,删
4个操作。
也就是说GET
一般用于获取/查询资源信息,而POST
一般用于更新资源信息。
所以GET
在信息修改层面,GET
比POST
安全。GET
请求一般不应产生副作用。它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。
Get
- GET 请求标准上是幂等的(用户应该认为请求是安全的-资源不会被修改,这里所以说应该是服务器端并不保证资源不会被修改)
- GET 请求可以被浏览器缓存;响应也可以被缓存(根据缓存头信息来处理)
- GET 请求可以保存在浏览器历史记录中,也可以作为链接分发或分享,可以收藏为书签
- GET请求的数据都在 URL 中,可以方便都从浏览器中获取数据(因此不能携带诸如密码的明文数据)
- GET 请求的长度会有限制
- GET 请求的数据只能包含 ASCII 字符
Post
- POST 请求标准上不是幂等的(用户应该认为请求是有副作用的,可能会导致资源修改)
- POST 请求URL可以被浏览器缓存,但是 POST 数据不会被缓存;响应可以被缓存(根据缓存头信息来处理)
- POST 请求不便于分发或分享,因为 POST 数据会丢失,不能收藏为书签。
- POST 请求没有长度限制,可以用来处理“请求数据”很大的场景(只要不超过服务器端的处理能力)
- POST 请求的数据不限于 ASCII 字符,可以包含二进制数据