HTTP通信协议与请求规范
请求
HTTP请求是指通过客户端(如应用程序)向服务器发送的一种请求行为,并以获取或提交所需的数据为目标。它依靠HTTP协议作为通信机制,在互联网上得到了广泛应用。
组成:
*请求数量及类型:如GET、POST、PUT、DELETE等均具有特定的操作语义。
*请求数值及路径:表示指定要访问的服务器上的特定资源位置。
*HTTP规范及版本:遵循HTTP协议标准(如HTTP/1.1),表示使用的通信协议版本。
- 请求头:
- 包含了关于请求的元数据,和一些认证信息。
对于特定的 HTTP 请求方法(如 POST), request bodies includes 包含会被发送到 server 中的数据。 这些 data 包括 form data, JSON, 和 XML 等类型的数据。
不是所有的请求都有请求体,例如GET请求通常没有请求体。
常用请求头
Host:标识发起请求的主机名
User-Agent:设备类型信息(如同类设备品牌或版本号);例如:Chrome浏览器可标识为Mozilla/5.0 …Chrome/79;
Accept:表示用户能够接收的内容媒体类型(如text/*, image/*或其他媒体类型);
Accept-Language:表示用户偏好使用的语言(服务器可据此返回不同语言风格的内容);
Accept-Encoding:表示用户能够接受的数据压缩格式(如gzip, deflate等)。
案例
采用GET方法进行网络请求至www.example.com服务器上的/example路径,并在请求头字段中包含有关于客户端行为偏好等信息的具体案例研究
GET /example HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept-Language: en-US,en;q=0.5
Connection: keep-alive
http
GET和POST请求区别
- GET类型的请求参数存在于 request body 中,并受到 size 限制
- POST类型的 request parameters 在 request body 中不存在 size 限制
响应
当服务器接收到客户端发送的HTTP请求时,HTTP响应即为此服务器向客户端返回的数据包。
组成
状态码:表示 HTTP 响应的状态信息,并由三个数字组成的编码来标识。
响应头:`包含涉及响应的信息并提供返回数据的基本特性及其格式
响应体:`响应体是HTTP请求的核心组成部分它包含服务器返回的原始信息
状态码
状态码大类
| 状态码 | 说明 |
|---|---|
| 1XX | 响应中 |
| 2XX | 响应成功 |
| 3XX | 重定向 |
| 4XX | 客户端错误 |
| 5XX | 服务端错误 |
此处列举几个常用的状态码
| 状态码 | 类型描述 | 解释 |
|---|---|---|
| 200 | OK | 处理成功 |
| 400 | Bad Request | 请求语法有误 |
| 403 | Forbidden | 服务器拒绝提供服务 |
| 404 | Not Found | 请求资源不存在,一般是URL有误或网站资源被删除 |
| 500 | Internal Server Error | 服务器出现错误 |
| 503 | Service Unavailable | 服务器真在初始化中 |
| 511 | Network Authentication Required | 服务器需要进行身份验证 |
完整的信息可访问:腾讯云开发手册
常见的响应头
Content-Type:标识该响应内容的类型,如text/html,image/jpeg等;
Content-Length:代表该响应内容的大小(以字节计);
Content-Encoding:涉及的数据压缩算法,如gzip等;
Cache-Control:告诉客户端如何缓存,例如max-age=300意味着最长可缓存300秒
请求规范
-
GET
用途是从服务器获取资源。
参数的位置通常附加在URL的末尾,并且多个参数之间一般会使用&符号分隔开来。
优点在于操作简便直观;缺点是每次请求的数据量有限,并不适合高效传输大体积的数据。
幂等操作的特点是无论被调用多少次其结果都保持一致。 -
POST
功能:向服务器发送数据,并常用于提交表单信息。
位置设置:将该参数放置于HTTP请求的体内容中。
特点:具有传输多条信息的能力(相较于GET请求而言稍微复杂一点)。它不具备幂等性(即每次请求可能导致不同的结果;例如多次提交表单可能增加多条记录)。
用途:该系统允许客户端将文件上传至服务器或更新现有资源。
参数位置:此功能位于请求体字段中。
特点:此操作可实时更新服务器中的对应资源,并支持幂等行为(例如,在将现有记录从A更改为B后再次发起相同请求将不会影响最终结果)。值得注意的是,在某些情况下(如无断点支持)发起多个PUT请求可能导致失败。
- DELETE
功能:用于删除服务器上的资源。
参数位置:位于URL的末尾。
特点包括能够删除服务器上的资源以及幂等操作的特点(例如,在尝试删除某个资源时,多次提交请求结果仍然是该资源被删除)。需要注意的是,在执行DELETE请求时通常无法撤销该操作。
