FastAPI 学生管理 CRUD 接口实战,内存存储 + Swagger 在线接口文档
一、项目简介本项目使用 Python 的 FastAPI 框架开发一套学生信息管理 CRUD 接口采用内存变量存储数据无需数据库重启程序数据清空内置 Swagger 交互式接口文档可直接在网页上测试新增、查询、修改、删除学生数据。实现功能查询全部学生列表根据学生 id 查询单个学生新增学生信息修改学生信息根据 id 删除学生开发环境Python3.8FastAPIuvicorn 运行服务代码仓库https://atomgit.com/roocu-g/bigdata_student_api二、项目目录结构bigdata_student_api/ ├─ README.md ├─ requirements.txt └─ app/ ├─ main.py ├─ models.py ├─ database.py └─ routers/ ├─ __init__.py └─ students.pyrequirements.txt项目依赖包清单app/main.py项目入口注册路由启动服务app/models.pyPydantic 数据模型做请求参数校验app/database.py内存模拟数据库存放学生数组app/routers/students.py学生业务接口所有 CRUD 路由写在这里__init__.py标识 routers 为 Python 包三、代码文件1. requirements.txtfastapi uvicorn2. app/database.py# 内存模拟数据库程序关闭数据丢失 students_db [ {id: 1, name: 张三, age: 18, major: 计算机科学}, {id: 2, name: 李四, age: 19, major: 大数据技术} ]3. app/models.pyfrom pydantic import BaseModel # 学生基础模型 class StudentBase(BaseModel): name: str age: int major: str # 创建学生用模型 class StudentCreate(StudentBase): pass # 返回给前端的学生模型 class Student(StudentBase): id: int class Config: orm_mode True4. app/routers/students.pyfrom fastapi import APIRouter, HTTPException from typing import List from app.models import Student, StudentCreate from app.database import students_db router APIRouter( prefix/students, tags[学生管理接口] ) # 获取全部学生 router.get(/, response_modelList[Student]) def get_all_students(): return students_db # 根据id获取单个学生 router.get(/{student_id}, response_modelStudent) def get_student(student_id: int): for stu in students_db: if stu[id] student_id: return stu raise HTTPException(status_code404, detail学生不存在) # 新增学生 router.post(/, response_modelStudent) def create_student(student: StudentCreate): new_id max([s[id] for s in students_db]) 1 if students_db else 1 new_student { id: new_id, name: student.name, age: student.age, major: student.major } students_db.append(new_student) return new_student # 修改学生信息 router.put(/{student_id}, response_modelStudent) def update_student(student_id: int, student: StudentCreate): for index, stu in enumerate(students_db): if stu[id] student_id: students_db[index] { id: student_id, name: student.name, age: student.age, major: student.major } return students_db[index] raise HTTPException(status_code404, detail学生不存在) # 删除学生 router.delete(/{student_id}) def delete_student(student_id: int): for index, stu in enumerate(students_db): if stu[id] student_id: del students_db[index] return {msg: 删除成功} raise HTTPException(status_code404, detail学生不存在)5. app/main.pyfrom fastapi import FastAPI from app.routers import students app FastAPI(title学生管理CRUD接口,version1.0) # 注册学生路由 app.include_router(students.router) app.get(/) def root(): return {message: 欢迎访问学生管理系统接口文档地址/docs}6. app/routers/init.py空文件不需要写任何代码。四、项目部署与运行安装依赖pip install -r requirements.txt启动服务uvicorn app.main:app --reload访问地址首页http://127.0.0.1:8000Swagger 交互式接口文档http://127.0.0.1:8000/docs五、接口测试说明打开/docs页面FastAPI 自动生成可视化接口页面可以直接在网页测试GET /students获取所有学生GET /students/{id}查询单个学生POST /students新增学生填写 name、age、majorPUT /students/{id}修改学生信息DELETE /students/{id}删除指定 id 学生⚠️注意本项目使用内存存储服务重启之后所有新增修改的数据全部丢失。如果需要持久化需要接入 MySQL、SQLite 等数据库。六、总结FastAPI 是高性能 Python Web 框架自带数据校验、自动生成 Swagger 文档开发后端接口效率很高。本项目完成学生信息的增删改查基础功能适合入门学习 RESTful API 开发。项目代码托管在 AtomGit 仓库可直接下载查看完整源码。

相关新闻

Python AI知识库源码实战:RAG检索增强生成与向量数据库全流程

Python AI知识库源码实战:RAG检索增强生成与向量数据库全流程

简介:这份AI知识库系统Python源码面向希望学习或二次开发知识管理系统的开发者,尤其适合具备Python基础、想了解数据库设计与模块化Web应用结构的中级学习者。源码包共22个文件,以10个html模板、6个py脚本、4个pyc字节码、1个txt说明文档和1个…

2026/10/11 17:00:01 阅读更多 →
PHP在线客服接入AI知识库:从关键词匹配到语义检索的落地路径

PHP在线客服接入AI知识库:从关键词匹配到语义检索的落地路径

简介:本资源为基于PHP与ThinkPHP框架的运营级在线客服系统源码,重点实现AI知识库接入能力,面向需要为企业级应用搭建智能客服模块的PHP开发者与运维人员。系统借助自然语言处理技术匹配客户问题并调用知识库作答,可提升客服响应效…

2026/10/11 17:00:01 阅读更多 →
任务排不过来先做哪个?Agentic Design Patterns优先级(Prioritization)模式解析

任务排不过来先做哪个?Agentic Design Patterns优先级(Prioritization)模式解析

文档教程AI Agent人工智能 【免费下载链接】Agentic-Design-Patterns Agentic Design Patterns 项目地址: https://gitcode.com/gh_mirrors/agen/Agentic-Design-Patterns 点击查看 免费下载 本文带你快速吃透开源项目 Agentic Design Patterns 中的 Prioritizatio…

2026/10/11 17:00:01 阅读更多 →

最新新闻

手写文字去除:OCR前图像预处理的可控方案

手写文字去除:OCR前图像预处理的可控方案

简介:本资源提供手写文字智能擦除的工业级Python实现方案,面向图像处理开发者、AI算法工程师及教育信息化从业者,解决试卷、表单等场景中手写内容与印刷体混杂导致的OCR识别干扰问题。资源包共36个文件,含22个核心Python脚本&…

2026/10/11 17:43:28 阅读更多 →
响应头里藏flag?从“迅疾响应”看CTF信息收集与源码审计

响应头里藏flag?从“迅疾响应”看CTF信息收集与源码审计

前几天一个刚入门的朋友在CTFshow上刷“菜狗杯”的新手题,卡在了一道叫“迅疾响应”的题目上。他跑来跟我说:页面就一行字,啥提示都没有,不知道从哪下手。我让他把浏览器开发者工具打开,先别碰页面内容,去翻…

2026/10/11 17:43:28 阅读更多 →
GemPy隐式地质建模实战:从数据准备到MCMC不确定性分析

GemPy隐式地质建模实战:从数据准备到MCMC不确定性分析

简介:GemPy是基于Python的开源隐式3D结构地质建模库,它利用界面与方向数据自动构建褶皱、断层网络和不整合面等复杂地质结构,避免了传统显式建模的繁杂几何操作,并支持贝叶斯推断与蒙特卡洛随机模拟以量化参数和模型不确定性&…

2026/10/11 17:43:27 阅读更多 →
Sourcetree重置操作全解析:soft、mixed、hard三种模式与恢复技巧

Sourcetree重置操作全解析:soft、mixed、hard三种模式与恢复技巧

1. 重置操作到底在重置什么:先搞懂Git的“后悔药”体系在聊Sourcetree之前,先说说我为什么总会写到这个主题。Git用久了你会发现,真正让人心里发虚的操作往往不是冲突合并,而是“怎么回到过去”。提交记录删不掉、分支拉错、本地改…

2026/10/11 17:43:27 阅读更多 →
Matlab CNN图像分类实战:从数据流水线到参数调试完整指南

Matlab CNN图像分类实战:从数据流水线到参数调试完整指南

简介:这是一套基于Matlab实现的卷积神经网络图像分类项目,适合正在学习CNN原理、需要完整可运行代码进行实验的初学者,也适合有一定深度学习基础的开发人员快速迁移使用。项目覆盖数据加载、特征提取(PCA)、网络初始化…

2026/10/11 17:43:27 阅读更多 →
C#实现Excel实时导入SQL Server:NPOI+SqlBulkCopy完整方案

C#实现Excel实时导入SQL Server:NPOI+SqlBulkCopy完整方案

有段时间我接到一个需求:业务部门每天把Excel报价单丢进一个共享目录,希望系统能把新数据自动读进SQL Server,全程不靠人点按钮。听到这个需求,我的第一反应是“读个Excel写个库而已”,真动手才发现,容易的…

2026/10/11 17:42:27 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →