以及Tortoise-ORM)
# 路径参数与查询参数:1.路径参数Path Parameters:指在路由路径后跟上参数,形如app.get(/items/{id}),路径参数是URL路径中的动态可变部分,格式为{参数名}用于标识「具体的资源」如物品ID、用户ID。例如/items/11是路径参数item_id的值/users/100100是路径参数user_id的值FastAPI会自动提取路径中的对应值并传递给路由处理函数。2.查询参数Query Parameters):查询参数是URL中?后面的键值对组合格式为key1value1key2value2用于对资源进行「筛选、分页、排序」等辅助操作。例如/items?skip0limit10skip跳过条数、limit查询条数是查询参数/users?name张三age20name姓名、age年龄是查询参数核心特点可选性默认可省略可设置默认值辅助性不用于标识唯一资源仅用于过滤、分页等灵活性支持单个键对应多个值如/items?tagsfruittagscheap3.区别:对比维度路径参数查询参数位置URL路径中/items/{item_id}URL后缀?skip0limit10必要性必填默认可选默认可设置必填核心用途标识唯一资源如ID、UID筛选、分页、排序等辅助操作配置工具Path类Query类示例场景/items/1、/users/100/items?limit10、/users?name张三为什么需要Query类型注解基础的查询参数写法如skip: int 0只能实现「类型校验默认值」但实际开发中需要更精细的控制分页参数limit必须≥1且≤50范围校验搜索关键词q长度必须≤100长度限制筛选标签tags支持多个值传入多值参数接口文档需要显示查询参数的详细描述元数据配置Query类型注解正是为解决这些问题而生它是FastAPI提供的「查询参数高级配置工具」与Path注解同源均基于Pydantic功能互补。# Tortoise-ORM我们在django框架的业务功能中采用过ORM查询,与之对应的,FastAPI也有其对应的ORM,称为:Tortoise-ORMORM 全称是 Object-Relational Mapping对象关系映射 。它的核心思想是用 Python 类来代表数据库中的表用类的实例来代表表中的一行记录.没有ORM时,我们需要手写SQL来操作数据库,代码量大且易出错.使用ORM后,我们仅需要操作 Python 对象.ORM 的优势面向对象用 Python 代码替代 SQL 语句更符合编程思维。安全性自动进行参数化查询防止 SQL 注入攻击。跨数据库同一套代码可以无缝切换 SQLite、PostgreSQL、MySQL 等数据库。关系管理自动处理表与表之间的外键、多对多等关系。可维护性表结构集中定义在模型类中修改和管理更方便。为什么选择 Tortoise-ORM在 Python 异步 Web 开发中传统的 ORM如 SQLAlchemy 1.x 的同步模式在执行数据库查询时会阻塞整个线程这与 FastAPI 的异步非阻塞理念背道而驰。Tortoise-ORM 的特点原生异步基于asyncio构建所有数据库操作都是异步的不会阻塞事件循环。Django 风格的 API如果你用过 Django ORM会发现语法非常熟悉上手极快。轻量级专注于核心功能没有冗余的抽象层性能出色。完整的关系支持支持外键、一对一、多对多等所有常见关系类型。内置 Pydantic 集成可以通过pydantic_model_creator自动从 Tortoise 模型生成 Pydantic 模型无缝对接 FastAPI 的请求/响应校验。同步 ORM vs 异步 ORM 对比维度同步 ORM如 Django ORM异步 ORMTortoise-ORM执行方式阻塞当前线程非阻塞协程挂起并发能力依赖多线程/多进程单线程高并发语法user User.objects.get(id1)user await User.get(id1)适用框架Django、FlaskFastAPI、Sanic、aiohttp后端 FastAPI 核心开发流程初始化 FastAPI 主应用实例配置跨域中间件解决前端网页跨域请求报错定义 Tortoise ORM 数据模型和 MySQL 数据表字段一一映射设置主键、默认值、自动创建 / 更新时间编写 Pydantic 数据校验模型约束前端传入参数的类型、长度、必填项实现请求数据自动校验逐个编写业务接口全部使用async def异步函数符合 Tortoise 异步 ORM 规范登录接口接收账号密码模拟返回 Token 与用户信息本次作业免后端鉴权校验查询列表接口接收查询参数状态筛选、关键词搜索、排序规则ORM 链式条件查询返回数据新增接口接收表单参数绑定固定用户 IDORM 插入单条数据编辑接口根据路径参数 ID 定位数据执行字段局部更新单字段状态修改接口单独更新任务状态附带业务逻辑完成则写入完成时间其他状态清空该字段删除接口根据 ID 删除对应数据数据统计接口使用 ORM 计数聚合查询统计各类任务数量绑定 Tortoise ORM 与 FastAPI 项目配置数据库连接地址实现项目启动自动连接数据库启动 uvicorn 服务在浏览器/docs接口文档页面手动调试后端所有接口确保单后端功能正常