1.名称
HTTP 协议 --> 超文本传输协议, 英文 --> Hypertext Transfer Protocol
2.版本
HTTP 0.9、1.0、1.1、2,当前最广泛使用的是 HTTP/1.1 版本。
3.特点
HTTP 协议最大的特点 --> 通讯双方 分为 客户端 和 服务端 。
4.交互方式
客户端 --> 发送 http请求(request)--> 服务端
<-- 发送 http响应(response)<--
特别注意:HTTP协议中,服务端不能主动先发送信息给 客户端。
在1.1 以前的版本, 服务端 返回响应给客户端后,连接就会 断开 ,
下一次双方要进行信息交流,必须重复上面的过程,重新建立连接,客户端发送请求,服务返回响应。
到了 1.1 版本, 建立连接后,这个连接可以保持一段时间(keep alive), 这段时间,双方可以多次进行 请求和响应,
无需重新建立连接。
5.常见的HTTP 请求方法包括:(客户端角度,对端是服务器)
5.1 GET(获取信息) 查
从服务器 获取 资源信息,这是一种最常见的请求。
比如 要 从服务器 获取 网页资源、获取图片资源、获取用户信息数据等等。
5.2 POST(添加信息,提交信息) 增
添加 资源信息 到 服务器进行处理(例如提交表单或者上传文件)。
比如 要 添加用户信息、上传图片数据 到服务器 等等
5.3 PUT (修改信息) 改
比如 要 更新 用户姓名、地址 等等
5.4 DELETE (删除信息) 删
比如 要 删除 某个用户、某个药品 等等
6.报文格式
####请求消息####
请求行(请求方法 请求资源的地址,不包括IP,IP由传输层指定 协议版本号)
请求头(名字: 值) 每个消息头占一行
Host: www.baidu.com (服务器可能搭建了多个host,所以需要指定HOST参数)
消息体,又叫请求体,不是每个消息都有请求体,和请求头之间有一行空行(3种文本格式:json xml www-form-urlencoded)
用于存放数据信息,get消息不用,post和put消息需要
####请求消息####
####响应消息####
响应行(协议版本 状态码 描述状态的短语),也叫状态行
响应头(和请求头一样)
消息体(3种文本格式:json xml www-form-urlencoded)
####响应消息####
状态码
状态码用3位的数字来表示,第一位 的 数字代表 处理结果的 大体类型,常见的有如下几种:
2xx 通常 表示请求消息 没有问题,而且 服务器 也正确处理了。最常见的就是 200
3xx 这是重定向响应,常见的值是 301,302, 表示客户端的这个请求的url地址已经改变了, 需要 客户端 重新发起一个 请求 到另外的一个url。
4xx 表示客户端请求有错误, 常见的值有:
400 Bad Request 表示客户端请求不符合接口要求,比如格式完全错误
401 Unauthorized 表示客户端需要先认证才能发送次请求
403 Forbidden 表示客户端没有权限要求服务器处理这样的请求, 比如普通用户请求删除别人账号等
404 Not Found 表示客户端请求的url 不存在
5xx 表示服务端在处理请求中,发生了未知的错误。通常是服务端的代码设计问题,或者是服务端子系统出了故障(比如数据库服务宕机了)
------------------------------------------
url参数
比如:
https://www.baidu.com/s?wd=iphone&rsv_spt=1
问号后面的部分 wd=iphone&rsv_spt=1 就是 url 参数,
每个参数之间是用 & 隔开的。
上面的例子中 有两个参数 wd 和 rsv_spt, 他们的值分别为 iphone 和 1 。
url参数的格式,有个术语叫 urlencoded 格式。
-------------------------------------------
<br> 代表换行符