CuteNote
颜值笔记
价格
反馈
中 / EN
登录
中 / EN
登录
← 返回
生成耗时 14秒
耗时
查看原链接
原链接
导出脑图
导出
Bilibili
45分28秒 · —
手搓 API 之前,先把 HTTP 看明白
长图
脑图
Markdown
原文
AI 问答
手搓API:理解HTTP协议
核心结论
通过手写API实践,掌握HTTP
请求与响应的规范结构,并理解GE
T与POST等方法的语义,为后续
使用框架打下基础。
HTTP协议基础
定义与角色
HTTP是浏览器上网的规范,A
PI复用此规范
调用方(发起请求)与被调用方(
响应)
请求与响应的对称结构
请求:请求行、请求头、空行、请
求体
响应:状态行、响应头、空行、响
应体
请求的组成
请求行
包含方法、路径、协议版本
示例:GET /api/ip
HTTP/1.1
请求头
格式为“名字: 值”,一行一条
常见:Host、User-Ag
ent、Accept、Cont
ent-Type
空行与请求体
空行分隔头与体
请求体通常用于POST提交内容
,GET一般无请求体
响应的组成
状态行
包含协议版本、状态码、简短说明
状态码规律:2xx成功,4xx
请求方问题,5xx服务方问题
响应头
关键字段:Content-Ty
pe描述响应体格式
示例:Content-Type
: application/j
son
响应体
实际返回的数据,如JSON或H
TML
HTTP方法
GET与POST
GET:请求获取数据,无请求体
POST:提交内容请服务器处理
,数据在请求体
其他方法
PUT:整体替换
PATCH:部分修改
DELETE:删除
HEAD:只要响应头
OPTIONS:查询允许的操作
常见头部
请求头
Host:目标服务器
User-Agent:客户端身
份
Accept:期望的响应格式
Authorization:身
份凭证
Cookie:随身小纸条
响应头
Content-Type:响应
体格式
Set-Cookie:给客户端
发纸条
Location:重定向地址
Access-Control-
Allow-Origin:跨域
控制
手写API实现
必读必写项
必读:请求方法、路径
必写:状态行、空行、Conte
nt-Type、响应体(实践)
Python代码结构
使用http.server模块
,do_GET处理GET
通过self.path判断路径
,send_response写
状态码
send_header写响应头
,end_header写空行
组装响应体并写出
运行与测试
监听8000端口,serve_
forever常驻
用curl或浏览器访问,验证返
回JSON
实验观察
Content-Type实验
指定为text/html时,浏
览器渲染为网页
指定为application/
json时,浏览器显示文本
需包含charset=utf-
8避免乱码
服务端可见信息
可看到请求头、User-Age
nt、客户端IP
可识别请求来自curl还是浏览
器
伪造User-Agent
通过curl设置UA可伪装为浏
览器
HTTP协议简单,信息可任意修
改
总结与展望
手写API的价值
理解HTTP底层原理
为使用框架打下基础
框架的必要性
真实项目接口众多,手写繁琐
框架封装重复劳动,如FastA
PI
首页
登录
我的