跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python大前端

FastAPI+Python 前后端交互实战:用户登录注册与信息管理

综述由AI生成通过 FastAPI 构建后端服务,结合 Python requests 库模拟前端客户端,实现了用户注册、登录及信息查看功能。教程详细解析了 HTTP 请求原理、URL 参数传递、数据校验逻辑及前后端交互流程,包含完整的代码示例与运行说明,适合初学者理解 Web API 开发基础。

独立开发者发布于 2026/2/8更新于 2026/5/2522 浏览

一、简介

1. FastAPI 概述

FastAPI 是一款现代、轻量、高性能的 Python Web 框架,专门用来快速构建 API(应用程序编程接口)。它是近几年 Python 生态中最火的 Web 框架之一,尤其适合快速上手写后端接口。

2. FastAPI 适用场景

  • 前后端分离项目的后端 API;
  • 微服务间的接口;
  • 数据接口(如提供数据库商品信息);
  • 快速原型开发。

二、FastAPI+Python 前后端交互全解析

作为初学者,刚接触前后端交互时容易对概念感到困惑。本文将结合实战代码,解析 FastAPI 接口编写、requests 库使用及 Request 对象原理,帮助你理解前后端交互的底层逻辑。

1. 前后端交互的本质

可以用餐厅点餐来比喻:

  • 前端:顾客,负责提需求(如要一碗牛肉面);
  • 后端:厨房,负责处理需求(煮面、加牛肉);
  • HTTP 协议:服务员,负责传递需求和结果;
  • 请求:顾客喊'服务员,来碗牛肉面';
  • 响应:服务员端上做好的菜或告知'卖完了'。

Python 前端脚本相当于'顾客',FastAPI 后端相当于'厨房',两者靠 HTTP 协议传递数据。

2. 项目需求

使用 FastAPI 实现以下功能:

  1. 用户注册:用户名和密码不为空,用户名长度大于 6,密码长度大于 8 且包含下划线、字母和数字,且用户名不重复。
  2. 用户登录:用户名和密码正确则提示欢迎,否则提示错误。
  3. 查看用户信息:获取已注册用户列表。

3. 代码设计思路

本项目采用'FastAPI 后端接口服务 + Python 命令行前端客户端'组合。

1. 前端代码设计思路

前端主要使用 requests 库发送 HTTP 请求。

import requests

requests 是 Python 生态中最常用的 HTTP 请求库,它将用户的操作转换成后端能识别的 HTTP 请求,并带回响应结果。

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()
        ()
     user_input == :
        user = ()
        password = ()
        res = requests.post(, params={: user, : password})
        result = res.json()
        ()
     user_input == :
        res = requests.post()
        result = res.json()
        (result)
     user_input == :
        
    :
        ()
print
f'{result["result"]}'
elif
'2'
input
"用户名:"
input
"密码:"
"http://127.0.0.1:8000/user/login"
"username"
"password"
print
f'{result["result"]}'
elif
'3'
"http://127.0.0.1:8000/user/logout"
print
elif
'4'
break
else
print
"输入的操作错误请重新输入"
  • while True:创建无限循环,直到用户选择退出。
  • input(...):打印菜单等待用户输入。
  • requests.post:发送 POST 请求到后端接口。
  • params:将字典转换为 URL 查询参数拼接到地址后。
  • res.json():将 JSON 格式字符串转换为 Python 字典。

注意:requests.post 返回的是 Response 对象,直接打印会显示 <Response [状态码]>。需使用 .json() 或 .text 解析内容。

2. 后端代码(FastAPI)设计思路

后端核心定位是提供数据处理接口,维护用户数据并校验业务规则。

import uvicorn
from fastapi import FastAPI, Request
import re

app = FastAPI()
user_datas = [{"username": "admin123", "password": "admin_123"}]

def judgment(username, password):
    # 条件:用户名长度>6,密码长度>=9,含数字/字母/下划线,无非法字符
    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": "注册失败:注册的用户名和密码未满足要求"}

@app.post('/user/login')
def login(request: Request):
    username = request.query_params['username']
    password = request.query_params['password']
    if judgment(username, password):
        for i in user_datas:
            if i['username'] == username and i['password'] == password:
                return {'result': f"登录成功:{username}欢迎"}
        return {"result": "登录失败:用户名或密码错误"}
    else:
        return {'result': '登录失败:用户名或密码输入不正确'}

@app.post('/user/logout')
def logout():
    return user_datas

if __name__ == '__main__':
    uvicorn.run("main:app", host="127.0.0.1", port=8000)
  • import uvicorn:导入 ASGI 服务器,用于监听网络请求。
  • @app.post:装饰器,定义路由路径和请求方法。
  • request.query_params:获取 URL 中的查询参数。
  • uvicorn.run:启动服务,绑定 IP 和端口。
3. 前后端交互底层逻辑总结
  1. 协议是桥梁:前后端靠 HTTP 协议沟通,遵循 GET/POST 方法及 JSON 格式规范。
  2. 数据是核心:前端传需求数据,后端返结果数据,格式统一为 JSON。
  3. 校验是保障:前端减少无效请求,后端防止恶意输入。
  4. 状态码是信号:200 表示成功,400 表示用户错误,500 表示后端错误。

三、完整代码展示

在 PyCharm 中创建两个 .py 文件:main.py(后端)和 test.py(前端)。

main.py (后端)

见上文'后端代码设计思路'部分。 运行流程:导入模块 -> 创建 app 实例 -> 初始化模拟数据库 -> 定义校验函数 -> 启动 Uvicorn 监听 8000 端口。

test.py (前端)

见上文'前端代码设计思路'部分。 运行流程:导入 requests -> 进入 while 循环 -> 打印菜单 -> 接收指令 -> 发送请求 -> 解析响应。

联动运行流程

  1. 先启动后端文件,再启动前端文件。
  2. 用户在前端输入指令(如 1 注册),前端发送 POST 请求至后端对应接口。
  3. 后端接收请求,校验数据,返回 JSON 结果。
  4. 前端解析 JSON 并打印结果,继续等待输入。
  5. 后端持续运行直到手动停止(Ctrl+C)。

数据传递类型

  • 后端:返回 Python 字典或列表,FastAPI 自动序列化为 JSON。
  • 前端:使用 res.json() 将 JSON 字符串反序列化为 Python 字典或列表。

目录

  1. 一、简介
  2. 1. FastAPI 概述
  3. 2. FastAPI 适用场景
  4. 二、FastAPI+Python 前后端交互全解析
  5. 1. 前后端交互的本质
  6. 2. 项目需求
  7. 3. 代码设计思路
  8. 1. 前端代码设计思路
  9. 2. 后端代码(FastAPI)设计思路
  10. 3. 前后端交互底层逻辑总结
  11. 三、完整代码展示
  12. main.py (后端)
  13. test.py (前端)
  14. 联动运行流程
  15. 数据传递类型
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Java 常见面试题及答案汇总
  • K-means 聚类算法详解
  • VS Code GitHub Copilot 不支持自定义模型 API 及搜索功能详解
  • 字节跳动 Linux C/C++ 后端面试真题解析
  • AI 入门:核心术语解析与常见误区澄清
  • log4js 库二次封装
前端文件上传处理最佳实践
  • C++ 从零实现 string 类详解
  • 为什么 Python 代码在函数中运行得更快
  • 灵感画廊:基于 Stable Diffusion XL 的极简 AI 绘画体验
  • Git 分布式版本控制系统:安装、配置与实战指南
  • 数据结构基础:空间复杂度与旋转数组算法解析
  • AI 安全:Stable Diffusion 视觉提示词注入攻击原理与实现
  • 数据结构复习:Java 顺序表与 ArrayList 详解
  • PHP 全链路追踪实践:trace_id 生成与透传
  • LlamaFactory 多模态大模型微调实战指南
  • LeetCode 92 链表区间反转:递归与哨兵节点实战
  • 基于 Copilot 反向代理的 Claude 本地部署指南
  • 并查集数据结构详解:操作、模板与经典练习
  • 基于 Trae Agent 与 MCP Tools 实现 Gitee 自动化辅助
  • 相关免费在线工具

    • curl 转代码

      解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

    • Base64 字符串编码/解码

      将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

    • Base64 文件转换器

      将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

    • Markdown转HTML

      将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

    • HTML转Markdown

      将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

    • JSON 压缩

      通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online