简介
下面的图片就是代表一次请求与响应的操作(就是浏览器和服务器之间的互动)
image.png
请求与响应
什么是请求,简单来说就是人操作浏览器向服务器发送一次询问,这次的询问就是一次请求。也可以说:是为了获取服务器上的一种资源,这种资源包括图片,声音,视频,文章......
什么是响应,就是说服务器在收到浏览器发送的一次询问之后,做出的反应。
请求的方法
下面我就主要说一下GET与POST这两种请求的区别
最直观的区别就是GET请求的时候,常常把参数放在URL当中,而POST就是用request body传递参数
要想解释GET与POST就一定要知道HTTP
HTTP是什么,它是一种协议,就是让数据如何在万维网中通信的协议
打一个比方,我家在东北,我老婆家在广东,有一天我老婆说我瘦了,给我寄来了广通特产,这个特产通过邮件运输,邮件的方式有顺丰,中通,圆通等等,但是从广东到东北的路有很多条,中通会选择从杭州中转,顺丰一定是路过福州。我老婆和我家就相当于浏览器与服务器,顺丰,中通,圆通这些就是就是请求的方式,要么选择GET,要么选择POST,那个从广东到东北的道路,就是协议,那么运输方式是什么呢,运输方式有可能是汽车,有可能是卡车,在有可能是面包车,这种交通工具就是TCP。为什么要有TCP?我们想想一下十字路口,HTTP就是红绿灯,TCP就是在十字路口等待的车辆,想想没有HTTP这个红绿灯的话,情况会如何?这条十字路口一定是瘫痪。
在详细的区别就看一下 w3school中的标准答案
请求与响应的格式
GET请求
接下来我要使用curl来发送请求,curl怎么使用就看下图的终端,首先下载sudo apt-get install curl
curl -s -v "https://www.baidu.com"
按下回车之后
image.png里面有请求和响应的格式
请求的内容为:
>GET / HTTP/1.1
>Host: www.baidu.com
>User-Agent: curl/7.60.0
>Accept: /
>
响应的内容为:
<HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Connection: Keep-Alive
< Content-Length: 2443
< Content-Type: text/html
< Date: Sun, 24 Feb 2019 10:36:41 GMT
< Etag: "58860415-98b"
< Last-Modified: Mon, 23 Jan 2017 13:24:37 GMT......(太多了)
POST 请求
curl -X POST -d "1234567890" -s -v -H -- "https://www.baidu.com"
看一下返回的结果
image.png请求
>POST / HTTP/1.1
> Host: www.baidu.com
> User-Agent: curl/7.60.0
> Accept: /
> Content-Length: 10
> Content-Type: application/x-www-form-urlencoded
>
响应
< HTTP/1.1 302 Found
< Connection: Keep-Alive
< Content-Length: 17931
< Content-Type: text/html
< Date: Sun, 24 Feb 2019 10:47:51 GMT
< Etag: "54d9749e-460b"
< Server: bfe/1.0.8.18
<......
根据上面的结果,我们就能发现请求与响应的格式
请求的格式
1 动词 路径 协议/版本
2 Key1: value1
2 Key2: value2
2 Key3: value3
2 Content-Type: application/x-www-form-urlencoded
2 Host: www.baidu.com
2 User-Agent: curl/7.54.0
3
4 要上传的数据
- 请求最多包含四部分,最少包含三部分。(也就是说第四部分可以为空)
- 第三部分永远都是一个回车(\n)
- 动词有 GET POST PUT PATCH DELETE HEAD OPTIONS 等
- 这里的路径包括「查询参数」,但不包括「锚点」
- 如果你没有写路径,那么路径默认为 /
- 第 2 部分中的 Content-Type 标注了第 4 部分的格式
响应的格式
1 协议/版本号 状态码 状态解释
2 Key1: value1
2 Key2: value2
2 Content-Length: 17931
2 Content-Type: text/html
3
4 要下载的内容
- 状态码要背,是服务器对浏览器说的话
1xx 不常用
2xx 表示成功
3xx 表示滚吧
4xx 表示你丫错了
5xx 表示好吧,我错了 - 状态解释没什么用
第 2 部分中的 Content-Type 标注了第 4 部分的格式
第 2 部分中的 Content-Type 遵循 MIME 规范
如何用Chrom来查看呢
- F12 快捷键
- 地址栏输入网址
- 查看 request,点击「view source」
- 点击「view source」
- 1.如果有请求的第四部分,那么在 FormData 或 Payload 里面可以看到
2.如果有响应的第四部分,那么就在Response 或者 Preview
网友评论