FastAPI零基础完整实战
目录前言1 环境安装2 第一个 FastAPI 项目2.1 方式 1命令行启动2.2 方式 2代码内直接启动 uvicorn2.3 访问自动交互式文档3 同步 def 与异步 async def 路由区别4 三大参数详解4.1 路径参数URL 路径中变量4.2 查询参数URL? 后键值对4.3 请求体POST/PUT 传 JSONPydantic 模型5大型项目模块化APIRouter 路由拆分5.1 项目结构5.2 子路由 routers/user.py5.3 主文件挂载路由 main.py6 本章总结前言FastAPI 基于 StarlettePydantic自带自动 Swagger 文档、类型校验、依赖注入是 Python 高性能 API 首选。本章从零搭建项目覆盖路由、路径参数、查询参数、请求体、模块化路由拆分。1 环境安装# 框架 异步服务器pipinstallfastapi uvicorn2 第一个 FastAPI 项目2.1 方式 1命令行启动main.pyfromfastapiimportFastAPI appFastAPI()app.get(/)defroot():return{msg:Hello FastAPI}app.get(/items/{item_id})defget_item(item_id:int,q:str|NoneNone):return{item_id:item_id,query:q}终端运行# main文件名 appFastAPI实例 --reload开发热更新uvicorn main:app--reload2.2 方式 2代码内直接启动 uvicornimportuvicornfromfastapiimportFastAPI appFastAPI()app.get(/)asyncdefroot():return{msg:async接口}if__name____main__:uvicorn.run(appmain:app,host0.0.0.0,# 允许局域网访问port8000,reloadTrue# 生产环境删除)2.3 访问自动交互式文档FastAPI Swagger文档页面接口预览文档http://127.0.0.1:8000/docsSwagger UI极简 JSON 文档http://127.0.0.1:8000/redoc3 同步 def 与异步 async def 路由区别async def原生协程内部可使用await异步 IO异步数据库 /aiohttp事件循环直接调度性能最优def同步函数FastAPI 自动放入线程池执行不阻塞事件循环但大量耗时同步操作会耗尽线程池最佳实践数据库、网络 IO 优先 async def纯计算逻辑使用普通 def4 三大参数详解4.1 路径参数URL 路径中变量# item_id强制int类型传字符串自动返回422校验错误app.get(/items/{item_id})asyncdefget_item(item_id:int):return{id:item_id}文档路径参数类型校验参数顺序坑固定路由/users/me必须写在/users/{user_id}前面否则me会被识别为 user_id 参数4.2 查询参数URL? 后键值对# start默认0 limit默认10 short布尔可选app.get(/items/)asyncdeflist_items(start:int0,limit:int10,short:boolFalse):return{slice:[start,startlimit],short:short}不传参数使用默认值不写默认值则为必传参数bool 类型自动转换true/1/on/yes都会识别为 True4.3 请求体POST/PUT 传 JSONPydantic 模型POST请求体文档示例frompydanticimportBaseModel# 定义请求体校验模型classItem(BaseModel):name:strprice:floatdesc:str|NoneNone# 可选字段app.post(/items/)asyncdefcreate_item(item:Item):# item自动转为字典返回自动校验字段类型returnitem5大型项目模块化APIRouter 路由拆分5.1 项目结构myproject/ ├── main.py # 主应用 └── routers/ ├── user.py # 用户模块路由 └── item.py # 商品模块路由5.2 子路由 routers/user.pyfromfastapiimportAPIRouter# prefix统一路由前缀 tags文档分组routerAPIRouter(prefix/users,tags[用户管理])router.get(/)defget_users():return{users:[]}router.get(/{user_id})defget_user(user_id:int):return{user_id:user_id}5.3 主文件挂载路由 main.pyfromfastapiimportFastAPIfromroutersimportuser,item appFastAPI(title路由拆分演示)# 把子路由注册到主应用app.include_router(user.router)app.include_router(item.router)app.get(/)defroot():return{msg:首页}路由拆分后文档分组效果运行后文档自动按tags分组接口地址自动拼接prefix6 本章总结FastAPI 内置自动接口文档无需手写 API 文档三类参数路径参数、查询参数、Pydantic 请求体自动类型校验区分同步 / 异步路由IO 密集优先 async defAPIRouter 实现路由模块化解决单文件路由臃肿问题

相关新闻

OpenClaw客户端部署图文,TopClaw三分钟不写代码上线

OpenClaw客户端部署图文,TopClaw三分钟不写代码上线

从“配环境”到“跑起来”,OpenClaw没那么玄乎 很多朋友一听到“客户端部署”四个字,脑子里就开始自动播放“命令行劝退”的恐怖片。其实真上手以后你会发现,OpenClaw的部署流程已经被简化得非常友好了,尤其是现在有了TopClaw这种…

2026/8/4 3:47:25 阅读更多 →
CNN听力法:每天10分钟四步精听,实现英语听力暴涨

CNN听力法:每天10分钟四步精听,实现英语听力暴涨

1. 背景与核心概念:为什么是CNN,以及“每天10分钟”的科学性 在英语学习的漫长征途中,听力往往是横亘在无数学习者面前的一座大山。传统的学习方法,如泛听VOA、BBC,或者精听教材录音,虽然有效,但…

2026/8/4 3:46:25 阅读更多 →
Vue+SpringBoot构建高并发在线拍卖系统实战

Vue+SpringBoot构建高并发在线拍卖系统实战

1. 项目概述183dys60这个在线拍卖系统项目采用了VueSpringBoot的主流技术栈,是当前企业级应用开发的黄金组合。我在实际开发中发现,这种前后端分离架构特别适合需要快速迭代的电商类项目。Vue负责构建灵活高效的用户界面,而SpringBoot则处理复…

2026/8/4 3:46:25 阅读更多 →

最新新闻

ACS NANO CrSBr 反铁磁自旋滤波隧道结

ACS NANO CrSBr 反铁磁自旋滤波隧道结

ACS NANO CrSBr 反铁磁自旋滤波隧道结Electrical Control and High-Bias Enhancement of Magnetoresistance in CrSBr Spin-Filter TFETs导读 导读:基于范德华反铁磁体 CrSBr 的垂直自旋滤波隧道场效应晶体管(Spin-TFET),实现了栅…

2026/8/4 4:20:43 阅读更多 →
扫地机器人自动回充技术全解析:激光雷达与视觉导航的实战对比

扫地机器人自动回充技术全解析:激光雷达与视觉导航的实战对比

1. 项目概述:扫地机“回家”背后的技术江湖扫地机器人能自己“回家”充电,这大概是它最让人省心的功能之一。从早期的“找不着北”到现在的精准回充,背后是一套复杂且不断演进的技术体系。我拆解和测试过市面上主流的几十款机型,发…

2026/8/4 4:20:43 阅读更多 →
数字信号最佳接收三步法:从原理到实践,掌握通信系统性能分析核心

数字信号最佳接收三步法:从原理到实践,掌握通信系统性能分析核心

这次我们来看一个通信原理中的核心概念:数字信号的最佳接收。对于通信、电子信息、自动化等相关专业的学生和工程师来说,理解最佳接收是掌握现代数字通信系统性能分析的关键。它直接关系到系统设计的核心指标——误码率。很多教材和课程会从复杂的数学推…

2026/8/4 4:20:43 阅读更多 →
SpringBoot+Vue校园疫情防控系统开发实战

SpringBoot+Vue校园疫情防控系统开发实战

1. 项目概述:校园疫情防控系统的技术架构与核心价值校园疫情防控系统是一套基于SpringBootVueMySQL技术栈的完整解决方案,专为教育机构常态化防疫管理设计。这个开源项目最吸引人的特点是"开箱即用"——开发者下载源码后无需复杂配置即可本地运…

2026/8/4 4:20:43 阅读更多 →
BLE Mesh技术解析:从广播信道到洪泛通信的物联网组网实践

BLE Mesh技术解析:从广播信道到洪泛通信的物联网组网实践

1. 从“点对点”到“多对多”:BLE Mesh的设计动机如果你玩过传统的蓝牙设备,比如连接一个耳机或者一个手环,你肯定熟悉那个“配对-连接-通信”的流程。这种经典蓝牙(Bluetooth Classic)或者BLE(Bluetooth L…

2026/8/4 4:20:43 阅读更多 →
直方图均衡化原理与Python实现:从基础到CLAHE实战

直方图均衡化原理与Python实现:从基础到CLAHE实战

1. 项目概述:直方图均衡化是什么,以及为什么你需要它 如果你处理过图像,尤其是那些在光线不佳条件下拍摄的照片,你肯定遇到过“对比度不足”的问题。整张照片看起来灰蒙蒙的,亮的地方不够亮,暗的地方不够暗…

2026/8/4 4:19:43 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/3 4:58:13 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/3 1:53:31 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/3 4:36:35 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/3 13:07:03 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/3 5:19:38 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/3 8:27:36 阅读更多 →