两小时快速入门 FastAPI--第二回 两小时快速入门 FastAPI–第二回FastAPI 实战完成一个简单的 Todo 查询接口一、FastAPI 简介FastAPI 是一个用于开发 Web API 的 Python 框架支持路径参数、查询参数、类型校验和自动接口文档。本次练习使用 Python 列表临时保存 Todo 数据并通过不同接口实现获取全部任务按完成状态筛选任务统计任务数量根据 ID 查询单个任务项目启动后可以访问下面的地址查看 Swagger 接口文档http://127.0.0.1:8000/docs二、本次任务目标本次练习主要完成一个简单的 Todo 查询 API创建临时 Todo 数据获取全部 Todo根据完成状态筛选 Todo统计总任务数和已完成任务数根据任务 ID 查询单个 Todo使用curl.exe测试接口三、完成任务的整个流程1. 编写 Todo API打开项目中的main.py写入以下代码fromfastapiimportFastAPI# 创建 FastAPI 应用实例。# title 会显示在自动生成的 Swagger 文档页面里。appFastAPI(title我的两个小时FastAPI练习)# 定义一个 Todo 列表作为当前项目的临时数据。接口下的代办和状态# 这里没有连接数据库所以数据只保存在程序运行时的内存中。todos[{id:1,title:学习FastAPI,done:False},{id:2,title:写一个Todoapi,done:True},]# 定义根路径接口。# 当访问 http://127.0.0.1:8000/ 时会执行这个函数。app.get(/)defroot():# 返回一个简单的 JSON 消息用来表示服务已经正常启动。return{message:FastAPI 已经启动}# 定义获取 Todo 列表的接口。# done 是一个可选查询参数可以按完成状态筛选任务。# 例如/todos?donetrue 或 /todos?donefalseapp.get(/todos)deflist_todos(done:bool|NoneNone):# 如果没有传入 done 参数就直接返回全部 Todo。ifdoneisNone:returntodos# 如果传入了 done 参数就只返回状态匹配的 Todo。return[todofortodointodosiftodo[done]done]# 定义统计 Todo 数量的接口。# 这个接口会返回总任务数以及已经完成的任务数。app.get(/todos/count)deftodo_count():# total 表示全部任务数量。# completed 表示 done 为 True 的任务数量。return{total:len(todos),completed:len([todofortodointodosiftodo[done]]),}# 定义根据任务 id 获取单个 Todo 的接口。# todo_id 是路径参数例如访问 /todos/1 时todo_id 的值就是 1。app.get(/todos/{todo_id})defget_todo(todo_id:int):# 遍历 todos 列表查找 id 和传入参数一致的任务。fortodointodos:iftodo[id]todo_id:returntodo# 如果没有找到对应 id 的任务就返回提示信息。return{message:Todo not found}这里使用的todos是一个普通 Python 列表并没有连接数据库。因此数据只会保存在程序运行时的内存中。程序重新启动后数据会恢复为代码中定义的内容。结果如图所示2. 获取 Todo 列表获取全部任务的接口为GET /todos访问地址http://127.0.0.1:8000/todos还可以通过done查询参数筛选任务。查询已完成任务http://127.0.0.1:8000/todos?donetrue查询未完成任务http://127.0.0.1:8000/todos?donefalsedone没有出现在接口路径中因此它属于查询参数。3. 统计 Todo 数量统计接口为GET /todos/count使用 PowerShell 测试curl.exehttp://127.0.0.1:8000/todos/count返回结果{total:2,completed:1}其中total表示全部任务数量completed表示已经完成的任务数量4. 根据 ID 查询 Todo查询单个任务的接口为GET /todos/{todo_id}其中todo_id是路径参数。查询 ID 为1的任务curl.exehttp://127.0.0.1:8000/todos/1返回{id:1,title:学习FastAPI,done:false}查询 ID 为2的任务curl.exehttp://127.0.0.1:8000/todos/2返回{id:2,title:写一个Todoapi,done:true}如果传入的 ID 不存在接口会返回{message:Todo not found}需要注意固定路径/todos/count应写在动态路径/todos/{todo_id}前面避免 FastAPI 将count当成todo_id处理。四、总结本次练习完成了一个简单的 Todo 查询 API主要学习了使用 Python 列表临时保存数据使用查询参数筛选任务使用路径参数查询单个任务使用列表推导式统计和筛选数据使用curl.exe测试 FastAPI 接口理解固定路径和动态路径的定义顺序目前的接口只能查询数据下一步可以继续增加新增、修改和删除 Todo 的接口完成一个基础的 Todo CRUD 项目。

相关新闻

最新新闻

RAG技术实战:从零搭建企业级私有知识库系统

RAG技术实战:从零搭建企业级私有知识库系统

在AI应用开发中,我们经常遇到一个核心痛点:通用大模型虽然知识渊博,但无法准确回答特定领域的问题。比如询问公司内部产品信息、技术文档细节或私有数据时,模型往往给出笼统甚至错误的答案。这正是RAG(检索增强生成&am…

2026/7/13 3:04:43
Sqribble文档自动化:模板驱动的PDF生成原理与实践

Sqribble文档自动化:模板驱动的PDF生成原理与实践

1. 项目概述:这不是“一键生成”,而是一套被精心封装的文档流水线你有没有过这种经历:手头有一篇写得不错的博客文章,或者一份整理好的培训笔记,突然需要把它变成一本像模像样的PDF小册子——用来当课程资料、客户提案…

2026/7/13 3:04:43
工业级C++异常处理:从防御性编程到契约设计的实战指南

工业级C++异常处理:从防御性编程到契约设计的实战指南

1. 项目概述:为什么工业级C需要更坚固的异常防线?在C的世界里摸爬滚打十几年,我见过太多因为异常处理不当而导致的深夜救火现场。一个看似稳定的服务,可能因为一个未捕获的std::bad_alloc而雪崩;一个精心设计的算法&am…

2026/7/13 3:04:43
SD卡无法格式化怎么解决?【图文讲解】全套安全修复实操完整教程

SD卡无法格式化怎么解决?【图文讲解】全套安全修复实操完整教程

(1)问题背景把相机、行车记录仪的SD卡插到电脑,右键格式化直接弹出「Windows 无法完成格式化」,换读卡器、换 USB 接口全都无济于事,是不是瞬间束手无策?很多人遇到这种故障,要么直接丢掉存储卡…

2026/7/13 3:04:43
Zotero 高级配置:5 个隐藏首选项优化文献管理与同步效率

Zotero 高级配置:5 个隐藏首选项优化文献管理与同步效率

Zotero 高级配置:5 个隐藏首选项优化文献管理与同步效率1. 解锁Zotero的隐藏潜能:about:config入门指南在科研工作者的数字工具箱中,Zotero早已超越简单的文献管理工具,成为学术工作流的核心枢纽。然而大多数用户仅停留在基础功能…

2026/7/13 3:04:43
OSS 文件下载 3 种方案对比:控制台、SDK 本地下载与流式下载的适用场景

OSS 文件下载 3 种方案对比:控制台、SDK 本地下载与流式下载的适用场景

OSS 文件下载方案深度对比:控制台、SDK 本地下载与流式下载的工程实践指南在云端存储架构中,对象存储服务(OSS)已成为企业数据管理的核心组件。面对不同业务场景下的文件下载需求,技术团队往往需要在控制台操作、SDK本…

2026/7/13 2:59:43

月新闻