admin管理员组

文章数量:1597897

http 请求报文格式:

上图有些问题,只有在post请求的时候才有body,比如这个场景:增加一个用户信息,则先通过path找到该路径(网页),然后所增加的个人信息就在body里面

 

响应报文:

常见四个请求方法:get,post,delete,put

 

get:在http0.9时,只支持get请求

作用:获取资源,没有body

 

post:

作用:增加或者修改资源,有body

 

put;

作用:修改资源,有body

 

get,put是幂等的,即执行多次,对服务器是没有印象的,比如获取多次用户信息,或者把某个用户的性别改为女,该多次仍未女的

 

delete:

作用:删除资源,没有body

 

 

head:

作用:跟get几乎一样,与get的区别,服务器不会返回body,使用场景:做下载时,要确定文件多大,看看支持不支持断点续传,多文件下载等等,用head请求一下

 

 

状态码:对结果作出类型化描述(获取成功,内容为找到等)

 

分类(以某数字打头的三位数):

1xx 临时性消息 100: 分段请求的响应,表示收到了分段消息,可以继续发

101:支持HTTP2(兼容性请求,请求是否支持http2)

2xx 成功: 200:获取成功,201:创建成功 ,很多把成功都归为200

3xx 重定向 301:资源永久迁移 302:资源临时迁移 304:内容没有改变

4xx 客户端错误:404: 400:参数错误 401:一般为未登录

5xx 服务器错误: 500 :一般为500

 

 

 

Header:

作用:HTTP消息的元数据(matedata),也可以叫做数据的属性

Host:服务器的主机地址,不是用来寻址,寻址是通过dns(域名系统)来完成,dns来查询域名所对应的IP,域名服务器返回相应的ip,然后在通过ip来找到服务器地址,这个寻址在拼接报文之后,在发送报文之前

为什么已经寻址完成还要发送域名?

服务器可能对应多个子服务器,一个IP地址可能对应四个服务器,所以在判断是哪个主机的问题的时候可能会有问题,所以在发送报文的时候来发送一个域名,来确定具体是那个主机

服务器地址一般为:域名+tcp端口

 

 

 

Content-Length :

作用:内容的长度(字节),因为在发送数据的过程中,不一定是文本文件,也可能是二进制文件,二进制文件可能会有换行符(反斜杠),而在读取的过程中,反斜杠是读取完成的标志,所以为了避免出现没读完的情况,加入一个长度,如果遇到反斜杠等,但是长度还没读完,就会继续往下读取

 

 

Content-Type:

作用:内容类型

分类: text/html 就是个HTML文件,用于浏览器页面响应-

application/x-www-form-urlencoded 普通表单,encoded URL格式,就是个提交的表格,如果是这样的类型,服务器就会按照表单读取body里的内容,纯文字

 

multipart-form-data 多部分形式,一般用于传输包含二进制内容的多项内容,带有文件的表单,可以传输纯文本,比较浪费带宽

application/json json形式,一般用于web api的响应或put,post的请求

image/jpeg/application/zip 图片

 

分段传输:

传输内容长度无法确定,但是在body中可以判断,如果body最后内容为0,那么就表示传完了,通过牺牲效率来保证正确传输,在服务器暂时返回足够信息时使用

Location:重定向的目标URL

 

User-Agent;用户代理,根据客服端的设备类型显示不同的内容,即网页不只会通过设备像素判断申请对象是手机还是电脑还是平板,还可以通过user-agent,

 

Range/Accpet-Ranage;指定body的内容范围,主要用于分段下载,断点续传;比如一张图片3000像素,我设置为在0-1500,就下载了一半

 

cookie/Set-Cookie;发送cookie和设置cookie

 

Anthorization;授权信息

 

部分其他header:

 

 

Cache

 

cache和buffer的区别?

 

Cache是缓存,这会用完以后可能还会用(并不一定会重用),在比较高的不会被回收的优秀级,比如LruCache

buffer是缓冲,都是针对工作流, 上产上游和消费下游,上游多上产给下流消费用,主要应对两种情况:上流生产过多,消费不完,储存;或者是短短时间就会大量消费,来应对大量消费,Cache是没用过的东西一定会用到,比如视频提前加载

 

Cache-Control:

分类:1.no-cache:服务器告诉客户端,再次使用资源资源时需要访问服务器,是否失效,可以

缓存

                  (1) Last-Modifide:最后一次改动文件

                       (1)  If-Modefide-Since;从事么时间开始改变

   (2)Etag:资源改变的标签

(1)If-None-Match:从何时开始改变标签

 

           2.no-store:不能缓存

           3.max-age:失效日期,在失效日期内都可以缓存

Last-Modifide:最后一次改动文件

                   4.public/private:客户端到服务器经过中间节点,决定中间节点是否需要缓存,资源时公共使用时,会在中间节点缓存,定制化的个性信息不会缓存

 

 

 

 

REST:

定义:一种架构风格,为HTTP进行一系列限制,但不针对于HTTP,却是在HTTP开始的,是对于整体的http系统而言的

 

限制条件:

Server-Client architecture:CS架构,即客户端发送消息,服务端响应

Statelessness :无状态,即第二次访问时,没有登录(没有cookie或者token),所以不能识别你的身份,http本身就符合无状态,不过http有些服务不是这样

Cacheability:可缓存,http是可以缓存的

Layered system:分层系统,指不知道服务器是不是一个服务器集群,但是客户端不知道,所以需要对客服端透明服务器集群,才直达访问的服务器

Code on demand:允许服务器在返回的数据中包含一些可执行代码

 

 还包含如下属性:

 

RESTful HTTP;正确使用HTTP,没别的东西

 

 

HTTP小结:

 

 

 

 

 

 

 

本文标签: 详解参数http