HTTP协议

HTTP协议

2026年9月18日·#编程学习/python学习笔记HTTP/网络基础·1249 字 6 分钟
浏览量加载中...
AI 摘要

HTTP 协议的定义与三大特点、请求与响应的数据格式、GET 与 POST 的区别以及常见状态码

什么是 HTTP#

Hyper Text Transfer Protocol,超文本传输协议,规定了客户端和服务器之间数据传输的规则

只有在请求及响应中都遵循了统一的规则,服务端才能读懂客户端发送来的请求,客户端才能解析服务端响应的结果。

三大特点#

特点含义
基于文本的协议请求和响应部分的协议内容为文本格式,底层通过 TCP 协议传输,稳定性强
基于请求-响应模型一次请求对应一次响应,必须由客户端先发起请求,服务端才会返回响应
无状态服务端不会记忆与客户端的历史交互信息,每次请求-响应都是独立的
Important

“无状态”这一条是理解 AI 会话记忆的关键:AI 大模型的交互同样是无状态的,模型本身没有记忆,所谓”记得上一句”是客户端把历史消息一起发过去了。详见 实战-AI智能伴侣-会话记忆

请求数据格式#

一次 HTTP 请求由三部分组成:

部分内容
请求行请求方式、资源路径、协议
请求头格式为 key: value
请求体请求参数部分,GET 方式没有,POST 可以有

下面是抓到的真实请求数据(一个 POST 请求的完整报文):

HTTP 请求报文示例

对照着看三部分在哪:

  • POST /api/courses HTTP/1.1请求行:请求方式是 POST,资源路径是 /api/courses,协议版本 HTTP/1.1
  • 中间一串 key: valueHostContent-TypeUser-Agent 等)是请求头
  • 最后一行是请求体,这里放的是 JSON 格式的请求参数

GET 与 POST 的区别#

对比项GETPOST
参数位置在请求行中,没有请求体在请求体中
示例/api/courses?name=Python&status=1请求体里放 JSON 等数据
大小限制浏览器中请求参数大小有限制请求大小没有限制

响应数据格式#

部分内容
响应行协议、状态码
响应头格式为 key: value
响应体存放服务端响应的数据

这是上面对应的真实响应数据

HTTP 响应报文示例

  • HTTP/1.1 200响应行:协议版本 + 状态码 200(请求成功)
  • 中间是响应头ServerDateContent-Type 等)
  • 最后是响应体{code: 1, msg: "success", data: null}

常见状态码#

状态码含义
200客户端请求成功
400请求参数错误
404请求资源不存在,url 输入有误,或者网站资源被删除了
500服务器发生了不可预期的错误
Tip

排查调用大模型接口报错的顺序:先看状态码。400 多半是请求体写错(例如 JSON 的 key 没加双引号、model 名字写错),401 说明 API Key 没带上或已失效404 说明 url 写错了

小结(复习自测)#

题目答案
请求格式请求行(请求方式、资源路径)、请求头(key)、请求体(POST 方式才有)
响应格式响应行(状态码)、响应头(key)、响应体
HTTP 的特点基于文本的协议、基于请求响应模型、无状态

相关#

练习题#

一、回忆填空(写完再展开对答案)#

  1. HTTP 全称 ____,中文是 ____
  2. HTTP 三大特点:基于 ____ 的协议、基于 ____ 模型、____
  3. 请求格式三部分:请求行(、资源路径、协议)、请求头( 格式)、请求体
  4. 响应格式三部分:响应行(协议、)、响应头、
  5. GET 的请求参数在 ____ 里;POST 的参数在 ____ 里
  6. 状态码:200 = ____;400 = ____;404 = ____;500 = ____
  7. HTTPS 的默认端口是 ____
填空答案(做完再点开)
  1. Hyper Text Transfer Protocol / 超文本传输协议 2. 文本、请求-响应、无状态 3. 请求方式、key: value 4. 状态码、响应体 5. 请求行、请求体 6. 请求成功 / 请求参数错误 / 请求资源不存在 / 服务器发生不可预期的错误 7. 443

二、概念自测#

  • 2-1 “无状态”是什么意思?它和 AI 的”会话记忆”有什么关系?

    参考答案(做完再点开)

    服务端不会记住与客户端的历史交互,每次请求-响应都是独立的。AI 大模型也一样没有记忆,所以”会话记忆”只能由客户端把历史消息一起发过去(会话历史滚雪球)。

  • 2-2 对着笔记里的真实请求报文图,指出请求行、请求头、请求体分别在哪

    参考答案(做完再点开)

    第一行 POST /api/courses HTTP/1.1 是请求行;中间一串 key: value 是请求头;最后一行是请求体(这里是 JSON 参数)。

  • 2-3 调用大模型接口返回 401,最可能是什么原因?

    参考答案(做完再点开)

    请求头里的 Authorization:要么没带(格式应为 Bearer <API Key>,注意 Bearer 和空格),要么 API Key 已失效/写错。

评论区

[ 标签 ]
# AI37# AI 编程2# AI工具1# Ajax2# Apifox1# AstrBot3# Astro2# CC Switch1# CDN2# Claude Code1# claudecode2# ClaudeCode1# Cloudflare2# CloudFlare2# CloudFlare-ImgBed3# coc3# CSS6# DeepSeek6# deepseek2# DELETE1# Docker1# EdgeOne3# Gist1# git1# GitHub1# hexo-circle-of-friends1# HTML6# HTTP5# ImageManager1# Java23# java13# JavaScript5# JDBC3# JSON2# JUnit1# LangChain25# Logback1# Maven6# Muse Spark1# Mybatis1# MyBatis4# MySQL28# MySql1# NapCat1# Node.js1# obsidian2# Obsidian5# OpenCode4# ORM1# PathVariable1# PicGo1# PyCharm1# Python65# RequestBody1# RequestMapping1# RESTful风格1# skills1# Slf4j1# SpringBoot11# SQL2# Streamlit5# Svelte2# TailwindCSS1# Telegram3# Tlias2# Vercel1# vscode2# Vue7# Waline3# WebDAV1# Web基础6# Web开发6# WinSCP1# YAML1# 三层架构1# 中二宣言1# 书籍1# 使用文档10# 写作1# 函数2# 刷步数1# 前端32# 动态1# 动漫1# 包1# 单词2# 博客7# 博客工作流1# 博客开发2# 参数接收1# 友链1# 反思2# 图床6# 地图1# 备份2# 大模型1# 奇思妙想1# 存储1# 学习方法6# 学校1# 宝塔面板3# 宝宝10# 对象1# 导航栏1# 工具2# 开发1# 开发工具1# 开发规范1# 开心1# 异常处理1# 影视2# 微信1# 性能优化2# 总结1# 想法15# 感受1# 感悟11# 指南1# 提示词工程1# 插件5# 故障排除1# 效率工具2# 教程10# 数据分析9# 数据库27# 数据结构1# 文件操作2# 斩神1# 日常92# 日志框架1# 朋友圈1# 朱元璋1# 模块1# 模板1# 正则表达式2# 测试1# 游戏2# 爬虫7# 生活迁移1# 电影2# 电脑1# 碎碎念1# 视觉识别1# 类1# 类型注解1# 网络基础2# 网络教室1# 羊毛2# 脚本2# 脚本工具1# 自动化2# 蓝奏云1# 订阅推荐2# 记录2# 评论系统1# 词根1# 词缀1# 说说1# 足迹1# 跑步2# 路径参数1# 转载2# 运动1# 部落冲突1# 配置1# 随机图1# 面向对象5# 音乐3# 音标1# 饮食1# 驼峰命名1# 高德地图1
[ 公告 ]

如果你喜欢,那么欢迎来到我的世界!

了解更多
[ 音乐 ]
封面

音乐

暂未播放

0:000:00
暂无歌词
找不到相关结果。
[ contents ]
[ 全部文章 ]