一、简介
FastAPI 是一款现代、轻量、高性能的 Python Web 框架,专门用于快速构建 API。它是 Python 生态中流行的 Web 框架之一,适合快速上手编写后端接口。
FastAPI 适用场景包括:
- 前后端分离项目的后端 API;
- 微服务间的接口;
- 数据接口(如提供数据库商品信息);
- 快速原型开发。
二、FastAPI+Python 前后端交互解析
1. 前后端交互本质
使用餐厅点餐的比喻理解:
- 前端:顾客,负责提需求;
- 后端:厨房,负责处理需求;
- HTTP 协议:服务员,负责传递需求和结果;
- 请求:顾客喊'来碗牛肉面';
- 响应:服务员端上做好的菜。
Python 前端脚本相当于'顾客',FastAPI 后端相当于'厨房',两者通过 HTTP 协议传递数据。
2. 项目需求
使用 FastAPI 实现以下功能:
- 用户注册:用户名和密码不为空,用户名长度大于 6,密码长度大于 8 且包含下划线、字母和数字时保存数据,不允许重复用户名。
- 用户登录:用户名和密码正确时提示欢迎,否则提示错误。
- 查看用户信息:获取已注册用户列表。
3. 代码设计思路
前端设计思路
使用 requests 库发送 HTTP 请求。
import requests
while True:
user_input = input('1、注册\n2、登录\n3、查看\n4、退出\n请输入你要进行的操作:')
if user_input == '1':
user = input("用户名:")
password = input("密码:")
res = requests.post("http://127.0.0.1:8000/user/register", params={"username": user, "password": password})
result = res.json()
print(f"{result['result']}")
elif user_input == '2':
user = input("用户名:")
password = input("密码:")
res = requests.post("http://127.0.0.1:8000/user/login", params={"username": user, "password": password})
result = res.json()
print(f"{result['result']}")
elif user_input == '3':
res = requests.post("http://127.0.0.1:8000/user/logout")
result = res.json()
print(f"{result}")
elif user_input == '4':
break
else:
print("输入的操作错误请重新输入")
requests.post:发送 POST 请求到后端接口。params:将字典转换为 URL 查询参数拼接在地址后。res.json():解析后端返回的 JSON 格式字符串为 Python 字典。
后端设计思路 (FastAPI)
import uvicorn
import re
from fastapi import FastAPI, Request
app = FastAPI()
user_datas = [
{"username": "admin123", "password": "admin_123"}
]
def judgment(username, password):
if len(username) > 6 and re.match(r'^(?=.*\d)(?=.*[a-zA-Z])(?=.*_)[a-zA-Z0-9_]{9,}$', password):
return 1
else:
return 0
@app.post('/user/register')
def register(request: Request):
username = request.query_params['username']
password = request.query_params['password']
for i in user_datas:
if i['username'] == username:
return {"result": "注册失败:用户名重复"}
if judgment(username, password):
user_data = {
"username": username,
"password": password,
}
user_datas.append(user_data)
print(user_datas)
return {"result": f"注册成功:{username}成功注册"}
else:
return {"result": "注册失败:注册的用户名和密码未满足要求"}
():
username = request.query_params[]
password = request.query_params[]
judgment(username, password):
i user_datas:
i[] == username i[] == password:
{: }
{: }
():
user_datas
__name__ == :
uvicorn.run(, host=, port=)
@app.post:装饰器,定义路由路径和请求方法。request.query_params:获取 URL 中的查询参数。uvicorn.run:启动 ASGI 服务器监听端口。
4. 交互逻辑总结
- 协议是桥梁:前后端靠 HTTP 协议沟通,遵循 POST/GET 方法及 JSON 格式。
- 数据是核心:前端传需求数据,后端返结果数据,格式统一为 JSON。
- 校验是保障:后端校验防止非法数据。
- 状态码是信号:200 表示成功,其他状态码指示错误类型。
5. 运行流程
- 创建
main.py(后端)和test.py(前端)两个文件。 - 运行
main.py启动后端服务,监听 127.0.0.1:8000。 - 运行
test.py启动前端客户端,进入循环菜单。 - 选择操作后,前端发送请求至后端,后端处理并返回 JSON 响应,前端解析展示。

