特点
- 无连接:不同的请求之间相互独立。
- 无状态:无状态是指协议对于事务处理没有记忆能力。
- 支持客户端/服务端模式。
- 简单快速:客户端向服务器请求服务时,只需传送请求方法和路径。
- 独立灵活:意味着只要客户端和服务器知道如何处理数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type 来传输。
HTTP请求
http请求组成
可以看到,由以下四部分组成
- 请求行
- 请求头
- 请求体
请求行
请求行由请求方法,URL,http版本组成
请求方法:
请求方法 | 含义 |
---|---|
GET | 获取资源 |
POST | 增加新的数据 |
HEAD | 获取资源的响应消息报头 |
PUT | 修改一个资源 |
DELETE | 删除资源 |
请求头
请求头:也被称作消息报头,请求头是由一些键值对组成,每行一对,关键字和值用英文冒号“:”分隔。
- Accept
作用:指定客户端能够接收的内容类型
示例:Accept:text/html - Accept-Charset
作用:浏览器可以接受的字符编码集
示例:Accept-Charset:utf-8 - Accept-Encoding
作用:指定浏览器可以支持web服务器返回内容的压缩编码类型
示例:Accept-Encoding:gzip - Accept-Language
作用:浏览器可接受的语言
示例:Accept-Language:en - Accept-Ranges
作用:可以请求网页实体的一个或者多个子范围字段
示例:Accept-Ranges:bytes - Authorization
作用:HTTP授权的授权证书类型 - Connection
作用:表示是否需要持久连接,注意HTTP1.1默认进行持久连接
示例:Connection:close - Cookie
作用:HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器
示例:Cookie:$Version=1;Skin=new - Content-Length
作用:请求的内容长度
示例:Content-Length:348 - Content-Type
作用:请求实体对应的类型信息 - Host
作用:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。
restful风格
1.每一个URI代表一种资源,独一无二
2.客户端通过四个HTTP方法,对服务器端资源进行CRUD操作
示例
【GET】 /users # 查询用户信息列表
【GET】 /users/1001 # 查看某个用户信息
【POST】 /users # 新建用户信息
【PUT】 /users/1001 # 更新用户信息(全部字段)
【PATCH】 /users/1001 # 更新用户信息(部分字段)
【DELETE】 /users/1001 # 删除用户信息
HTTP响应
http响应由状态行,消息头,响应体组成
状态行
状态行由三部分组成,HTTP协议的版本号、状态码、以及对状态码的文本描述。
例如:HTTP/1.1 200 OK (CRLF)
状态码
请求成功
状态码 | 含义 |
---|---|
200 | 表示客户端请求成功 |
204 | 表示请求成功,但服务器无响应内容 |
重定向
- 301
表示永久重定向,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替址。
- 302
表示临时重定向,客户端应当继续向原有地址发送以后的请求。
- 303(See Other)
通常是指所请求的资源在别的地方,并且同302一样,会在header中的location标明资源的位置。
比如,我想要创建一个user,当关于这个user已经存在的时候,server将返回303,并且告之这个user的获取位置。明确需要用get请求
实例请求
POST / HTTP/1.1 Host: www.example.com/user
响应
HTTP/1.1 303 See Other Location: http://example.org/user/1
请求错误
状态码 | 含义 |
---|---|
400 | 指代坏请求 |
401 | 表示请求未经授权 |
403 | 表示服务器收到请求,但拒绝提供服务 |
404 | 表示资源不存在 |
405 | 表示请求方式不允许. |
406 | 请求的资源的内容特性无法满足请求头中的条件,即后台响应的结果前台无法解析 |
408 | 请求超时 |
411 | 服务器拒绝在没有定义 Content-Length 头的情况下接受请求。在添加了表明请求消息体长度的有效 Content-Length 头之后,客户端可以再次提交该请求。 |
服务器错误
状态码 | 含义 |
---|---|
500 | 表示服务器错误 |
502 | 表示网关错误 |
503 | 服务器当前无法处理请求 |
504 | 网关超时 |
505 | 服务器不支持或拒绝http版本 |