HTTP概念、原理、机制、数据格式
1.HTTP的简介
HTTP 的定义
一种网络传输协议,位于TCP/IP 协议族的应用层。
超文本传输协议(HTTP,HyperText Transfer Protocol),和HTML(Hypertext Markup Language),HTTP是互联网上应用最为广泛的一种网络协议。所用的www文件必须准守这个标准。
超文本,既(扩展性文本),指的是HTML中可以有链向别的文本的链接。
image.png
2.HTTP的工作方式
浏览器:
用户在浏览器输入地址点击回车->浏览器拼装HTTP报文并发送请求给服务器->服务器处理请求后发送响应报文给浏览器->浏览器解析报文并且显示到界面
APP:
用户打开APP->Android端调用请求拼接报文并且发送给服务器->服务器处理请求后响应报文给手机->Android处理响应报文并且处理数据展示页面
3.URL 和 HTTP报文
URL 格式
协议类型://服务器地址[:端口号]路径
请求报文格式
image.png响应报文格式
image.pngRequest Method 请求方法
GET
1.用于获取服务器资源
2.对于不对服务器资源进行修改的请求
3.get请求没有请求体
GET /users/1 HTTP/1.1
Host: www.baidu.com
POST
1.用于修改或者增加资源
2.发送给服务器的内容放置在body中
POST /users HTTP/1.1
Host: www.baidu.com Content-Type: application/x-www-form-urlencoded
Content-Length: 13
name=rengwuxian&gender=male
PUT
1.用于修改资源
2.发送给服务器的内容放置在body中
PUT /users/1 HTTP/1.1
Host: www.baidu.com Content-Type: application/x-www-form-urlencoded
Content-Length: 13
gender=female
Delete
1.用于删除资源
2.不发送body
DELETE /users/1 HTTP/1.1
Host: www.baidu.com
Head
1.和GET使用方法完全相同
2.和GET唯一区别在于,返回的响应中没有Body
Status Code 状态码
状态吗是三位数字,用于对响应结果做出类型化描述
- 1xx:临时性消息。如:100(继续发送)、101(正在切换协议)
- 2xx:成功。如:200(响应成功)、201(创建成功)
- 3xx:重定向。如:301(永久移动)、302(暂时移动)、304(内容未改变)
- 4xx:客户端错误。如:400(客户端请求错误)、401(认证失败)、403(被禁止)、404(找不到内容)
- 5xx:服务器错误。如500(服务器内部错误)
Header 首部
作用:HTTP消息的metadata。
Host
目标主机。是在目标服务器上用于定位子服务器
Content-Type
指定Body的类型。主要有四类:
1.text/html :请求Web页面是返回响应的类型,Body中返回html文本
2.x-www-form-urlencoded :Web 页面纯文本表单的提交方式
3.multitype/form-data:Web页面含有二进制文件时的提交方式
4.application/json,image/jpeg,application/zip ……
单项内容(文本或非文本都可以),用于Web api的响应或者POST/PUT的请求
Content-Length
指定Body的长度(字节)
Trans:chunked(分块传输编码Chunked Transfer Encoding)
用于当响应发起时,内容长度还没能确定的情况下。和Content-Length不同时使用。用途是尽早给出响应,减少用户等待。
格式:
HTTP/1.1 200 OK
Content-Type: text/html
Transfer-Encoding: chunked
4
Chun
9
ked Trans
12
fer Encoding
0
Location
指定重定向的目标URL
User-Agent
用户代理,既是谁实际发送请求、接受响应的,例如手机浏览器等
Range/Accept-Range
按范围获取数据
按范围取数据
Accept-Range: bytes 响应报⽂文中出现,表示服务器器⽀支持按字节来取范围数据 Range: bytes=<start>-<end> 请求报⽂文中出现,表示要取哪段数据 Content-Range:<start>-<end>/total 响应报⽂文中出现,表示发送的是哪段数据
作⽤用:断点续传、多线程下载。
其他Headers
Accept: 客户端能接受的数据类型。如 text/html
Accept-Charset: 客户端接受的字符集。如 utf-8
Accept-Encoding: 客户端接受的压缩编码类型。如 gzip
Content-Encoding:压缩类型。如 gzip
Cache
在客户端或者中间网络节点缓存数据,降低从服务器获取数据的频率,用来提高网络性能