ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

FastAPI 学生管理 CRUD 接口实战,内存存储 + Swagger 在线接口文档

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 仓库可直接下载查看完整源码。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进