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

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

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

独立开发者发布于 2026/2/8更新于 2026/9/1258 浏览

一、简介

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()
        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(result)
    elif user_input == '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. 数据传递类型

更多推荐文章

查看全部
  • Ocbot:一款开源的 AI 原生浏览器深度解析
  • 网文作家 AI 写作技巧与效率提升
  • 豆包 Seedream 4.0 多图融合技术解析:田园犬与三花猫多场景生成
  • PageIndex 无分块文档索引系统实战指南
  • 沉金工艺 DIY 蛇年赛博福钥匙扣教程
  • Stable Diffusion WebUI Docker 部署指南
  • OpenPilot 开源自动驾驶系统移植与 L2 辅助驾驶开发指南
  • Python 异步编程实战:构建高性能网络应用
  • 使用 Coze 平台搭建多功能 AI 女友机器人
  • 前端安全实战:防范 XSS、CSRF 及敏感信息泄露
  • Flutter 三方库 bones_ui 的鸿蒙化适配指南
  • Python 环境管理:uv 与 conda 核心差异与选型建议
  • 二次元 AI 绘画实战:工具选择与提示词工程
  • Python + AI:构建智能害虫识别助手
  • WebGIS、无人机与 AI 融合的智能巡检系统架构设计
  • Web3 基于区块链的下一代互联网
  • Git 版本控制核心命令与实战流程
  • Linux 2.6 内核 O(1) 调度队列原理:如何实现常数时间调度
  • Web 应用全栈开发实践:从前端到后端
  • 复杂网络分析:社区发现算法简介

相关免费在线工具

  • 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