http&restful&post-get---------2020年11月16日21:10:31

: 记录我学习到的关于post&get&rest的相关知识     ------ @author 爱跳舞的小码农 Bboy_fork

rest

什么是rest?

representational state transfer 表述性状态转移,是一种架构风格。

rest原则?

① 网络上的所有事物都被抽象为资源
② 每个资源都有一个唯一的资源标识符
③ 同一个资源具有多种表现形式(xml,json等)
④ 对资源的各种操作不会改变资源标识符
⑤ 所有的操作都是无状态的

restful?

遵守了rest原则的web服务
翻译: “rest式的”
rest式的应用,rest风格的web服务也是rest式的应用,
rest式的web服务是一种ROA
(The Resource-Oriented Architecture) 面向资源的架构

restful是由rest派生出来的

用法

在Restful之前的操作:
http://127.0.0.1/user/query/1 GET 根据用户id查询用户数据
http://127.0.0.1/user/save POST 新增用户
http://127.0.0.1/user/update POST 修改用户信息
http://127.0.0.1/user/delete GET/POST 删除用户信息

RESTful用法:
http://127.0.0.1/user/1 GET 根据用户id查询用户数据
http://127.0.0.1/user POST 新增用户
http://127.0.0.1/user PUT 修改用户信息
http://127.0.0.1/user DELETE 删除用户信息

HTTP根本

HTTP请求报文解剖:

HTTP请求报文由3部分组成(请求行+请求头+请求体)
① 请求方法:GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。
有哪些请求方式?

② 为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL。【URL】
③ 是协议名称及版本号。 【没啥好说】


④ 是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。【即header】
请求头


⑤是报文体【不多逼逼】

所以 懂了!
那么 我们总用post&get 面试也总会问…

post&get区别

菜逼回答:

get在浏览器回退时是无害的,而POST会再次提交请求。
GET请求会被浏览器主动cache,而POST不会,除非手动设置。
GET请求只能进行url编码,而POST支持多种编码方式。
GET请求在URL中传送参数是有长度限制的,而POST没有限制。
GET比PSOT更不安全,所以不能用来传递铭感信息。
GET参数通过URL传递,PSOT放在Request body中。


正常回答:

HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。
而HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行得通的。

post和get还有一个重大区别,
GET产生一个数据包;POST产生两个TCP数据包。
对于GET方式的请求,浏览器会吧http header和data一并发送出去,服务器响应ok(返回数据)。
而对于POST,浏览器先发送header,服务器响应100continue,浏览器在发送data,服务器响应200 ok(返回数据)。

因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。但这是一个坑!跳入需谨慎。为什么?

  1. GET与POST都有自己的**语义**,不能随便混用。 DELETE、PUT也是语义 是吧。
  2. 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
  3. 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

实际上:
get虽然理论上可以跟无限的参数,但是大多数浏览器通常限制在2k个字节,而大多数服务器最多处理64个字节的url, 超过的,恕不处理。 使用GET,在request body中偷偷藏了数据,有的服务器会读取,有的会忽略,不保证能够接到。

GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同

—— 好 这篇就到这。稳

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值