什么是 HTTP
Hyper Text Transfer Protocol,超文本传输协议,规定了客户端和服务器之间数据传输的规则。
只有在请求及响应中都遵循了统一的规则,服务端才能读懂客户端发送来的请求,客户端才能解析服务端响应的结果。
三大特点
| 特点 | 含义 |
|---|---|
| 基于文本的协议 | 请求和响应部分的协议内容为文本格式,底层通过 TCP 协议传输,稳定性强 |
| 基于请求-响应模型 | 一次请求对应一次响应,必须由客户端先发起请求,服务端才会返回响应 |
| 无状态 | 服务端不会记忆与客户端的历史交互信息,每次请求-响应都是独立的 |
IMPORTANT
"无状态"这一条是理解 AI 会话记忆的关键:AI 大模型的交互同样是无状态的,模型本身没有记忆,所谓"记得上一句"是客户端把历史消息一起发过去了。详见 实战-AI智能伴侣-会话记忆。
请求数据格式
一次 HTTP 请求由三部分组成:
| 部分 | 内容 | |
|---|---|---|
| 请求行 | 请求方式、资源路径、协议 | |
| 请求头 | 格式为 key: value | |
| 请求体 | 请求参数部分,GET 方式没有,POST 可以有 |
下面是抓到的真实请求数据(一个 POST 请求的完整报文):
.png)
对照着看三部分在哪:
POST /api/courses HTTP/1.1是请求行:请求方式是 POST,资源路径是/api/courses,协议版本 HTTP/1.1- 中间一串
key: value(Host、Content-Type、User-Agent等)是请求头 - 最后一行是请求体,这里放的是 JSON 格式的请求参数
GET 与 POST 的区别
| 对比项 | GET | POST |
|---|---|---|
| 参数位置 | 在请求行中,没有请求体 | 在请求体中 |
| 示例 | /api/courses?name=Python&status=1 | 请求体里放 JSON 等数据 |
| 大小限制 | 浏览器中请求参数大小有限制 | 请求大小没有限制 |
响应数据格式
| 部分 | 内容 |
|---|---|
| 响应行 | 协议、状态码 |
| 响应头 | 格式为 key: value |
| 响应体 | 存放服务端响应的数据 |
这是上面对应的真实响应数据:

HTTP/1.1 200是响应行:协议版本 + 状态码 200(请求成功)- 中间是响应头(
Server、Date、Content-Type等) - 最后是响应体:
{code: 1, msg: "success", data: null}
常见状态码
| 状态码 | 含义 |
|---|---|
| 200 | 客户端请求成功 |
| 400 | 请求参数错误 |
| 404 | 请求资源不存在,url 输入有误,或者网站资源被删除了 |
| 500 | 服务器发生了不可预期的错误 |
TIP
排查调用大模型接口报错的顺序:先看状态码。400 多半是请求体写错(例如 JSON 的 key 没加双引号、model 名字写错),401 说明 API Key 没带上或已失效,404 说明 url 写错了。
小结(复习自测)
| 题目 | 答案 |
|---|---|
| 请求格式 | 请求行(请求方式、资源路径)、请求头(key:value)、请求体(POST 方式才有) |
| 响应格式 | 响应行(状态码)、响应头(key:value)、响应体 |
| HTTP 的特点 | 基于文本的协议、基于请求响应模型、无状态 |
相关
练习题
一、知识回顾(读完直接做下面的实践题)
- HTTP 全称 Hyper Text Transfer Protocol,中文是超文本传输协议
- HTTP 三大特点:基于文本的协议、基于请求-响应模型、无状态
- 请求格式三部分:请求行(请求方式、资源路径、协议)、请求头(
key: value格式)、请求体 - 响应格式三部分:响应行(协议、状态码)、响应头、响应体
- GET 的请求参数在请求行里;POST 的参数在请求体里
- 状态码:200 = 请求成功;400 = 请求参数错误;404 = 请求资源不存在;500 = 服务器发生不可预期的错误
- HTTPS 的默认端口是 443
- 请求头的格式是
key: value;调用大模型接口时 401 多半是Authorization没带(格式为Bearer <API Key>,Bearer 后有一个空格)或 Key 已失效
二、概念自测
- 提示(先自己想,实在想不出再点开)
一级 · 思路:先解释"服务端不记历史",再反推:模型也记不住,那"记得上一句"只能是谁做的
- 参考答案(做完再点开)
2-1 服务端不会记住与客户端的历史交互,每次请求-响应都是独立的。AI 大模型也一样没有记忆,所以"会话记忆"只能由客户端把历史消息一起发过去(会话历史滚雪球)。
- 提示(先自己想,实在想不出再点开)
一级 · 思路:按"第一行看请求方式、中间一片 key: value、最后一块是参数"的顺序在图里从上往下找
- 参考答案(做完再点开)
2-2 第一行
POST /api/courses HTTP/1.1是请求行;中间一串 key: value 是请求头;最后一行是请求体(这里是 JSON 参数)。- 提示(先自己想,实在想不出再点开)
一级 · 思路:401 表示"未认证/没通过身份校验",去请求头里找那个代表身份的字段
- 参考答案(做完再点开)
2-3 请求头里的
Authorization:要么没带(格式应为Bearer <API Key>,注意 Bearer 和空格),要么 API Key 已失效/写错。
