1. http的几种请求方式
- HTTP/1.0支持:GET、POST、HEAD三种HTTP请求方法。
- HTTP/1.1新增了:OPTIONS、PUT、DELETE、TRACE、CONNECT五种HTTP请求方法。
1.1 常见四种请求方式
POST、DELETE、PUT、GET 分别对应着
增 ———- 删 ——— 改 —— 查
请求参数格式
-
Query String Parameters格式:?key=value&key=value参数会以 url string 的形式进行传递,即?后的字符串则为其请求参数,并以&作为分隔符。常用在 GET 请求方式时使用。 其他请求方式也可以使用,拼接在接口地址url?后面。
-
Form Data格式:key=value&key=value键值对形式
1.2 详情
不同请求方式都有默认的规范,例如get请求常用来请求数据,但同时也可以用来修改数据等
1、GET请求常用来向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,用来查询一下数据。也可以用来修改内容,下载文件等。【常用参数params(Query String Parameters); Form Data】
2、与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等【常用参数data】
3、POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。【常用参数data】
4、DELETE请求常用来用来删除某一个资源的,该请求就像数据库的delete操作。【常用参数params】
结合所学所用:【待补充】
(1)、POST /url 创建 ,上传,登录,退出, (2)、DELETE /url/xxx 删除 (3)、PUT /url/xxx 更新
(4)、GET/url 请求数据,下载
1.3 GET请求和POST请求的区别
| 区别 | get | post |
|---|---|---|
| 请求参数 | GET请求提交的参数体现在url中(get请求没有请求体) | POST请求的参数通过请求体提交 |
| 安全性 | 参数会直接暴露在url上,不安全 | post请求较为安全 |
| 长度限制 | get请求提交的数据有长度限制,因为参数都在url中【这种说法不太准确详见1.3.1】 | post请求则没有长度限制 |
| 缓存 | get请求会被浏览器主动缓存 | post请求不会,除非手动设置 |
总结一下可以得出结论,GET请求和POST请求本质上是一样的,GET请求通过请求体提交参数和POST请求通过url提交参数都是可行的,但是并不推荐这样做,因为并不能保证服务器可以接受到这种方式传递的参数。
GET请求和POST请求的另一点区别,我们可能知道POST请求要比GET请求慢一下,这是什么原因导致的呢?因为GET请求产生一个TCP数据包,而POST请求会产生两个TCP数据包。对于GET请求,浏览器会把Http header和data一并发送出去,服务器响应200(ok);而对于POST请求,浏览器先发送header,服务器响应100(continue),浏览器再发送data。正是因为POST请求会发送两次包,所以相对会慢一些。但是需要注意,并不是所有浏览器都会在POST请求中发送两次包,Firefox就只发送一次。
1.3.1 get请求方式---长度限制
对于GET请求参数的大小限制,我们知道是由于url长度的限制导致的,但其实url的长度并不是GET请求限制的,而是特定的浏览器及服务器的限制,将不同的浏览器和服务器比作不同的运输公司,虽然理论上可以在车顶上无限地堆货物(url中无限加参数),但是运输公司可不傻,装货和卸货也是有很大成本的,他们会限制单次运输量来控制风险,数据量太大对浏览器和服务器都是很大负担。业界不成文的规定是,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url,超过的部分恕不处理。
2. 其他请求方式
2.1 OPTIONS
OPTIONS: 相当于探针。options 请求就是预检请求,可用于检测服务器允许的 http 方法。当发起跨域请求时,由于安全原因,触发一定条件时浏览器会在正式请求之前自动先发起 OPTIONS 请求,即 CORS 预检请求,服务器若接受该跨域请求,浏览器才继续发起正式请求。
2.2 HEAD
HEAD:HEAD方法与 GET 方法类似,也是请求从服务器获取资源,服务器的处理机制也是一样的,但服务器不会返回请求的实体数据,只会传回响应头,也就是资源的“元信息”
HEAD 方法可以看做是 GET 方法的一个“简化版”或者“轻量版”。因为它的响应头与 GET 完全相同,所以可以用在很多并不真正需要资源的场合,避免传输 body 数据的浪费。
比如,想要检查一个文件是否存在,只要发个 HEAD 请求就可以了,没有必要用 GET 把整个文件都取下来。再比如,要检查文件是否有最新版本,同样也应该用 HEAD,服务器会在响应头里把文件的修改时间传回来。
- 在不获取资源的情况下了解资源的情况(比如,判断其类型);
- 通过查看响应中的状态码,看看某个对象是否存在;
- 通过查看首部,测试资源是否被修改了。
2.3 TRACE
- TRACE:回显服务器收到的请求,主要用于测试或诊断。 客户端发起一个请求时,这个请求可能要穿过防火墙、代理、网关或其他一些应用程序。每个中间节点都可能会修改原始的 HTTP 请求。TRACE 方法允许客户端在 最终将请求发送给服务器时,看看它变成了什么样子。
TRACE 请求会在目的服务器端发起一个 环回 诊断。行程最后一站的服务器会弹回一条 TRACE 响应,并在响应主体中携带它收到的原始请求报文。这样客户端就可以查看在所有中间 HTTP 应用程序组成的请求 / 响应链上,原始报文是否,以及如何被毁坏或修改过。
2.4 CONNECT
- CONNECT:
CONNECT可以用来访问采用了 SSL (en-US) (HTTPS) 协议的站点。客户端要求代理服务器将 TCP 连接作为通往目的主机隧道。之后该服务器会代替客户端与目的主机建立连接。连接建立好之后,代理服务器会面向客户端发送或接收 TCP 消息流。 参考: www.jianshu.com/p/065fc0555…
blog.csdn.net/weixin_3796…