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/10/17 8:09:25 阅读更多 →
CNN听力法:每天10分钟四步精听,实现英语听力暴涨

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

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

2026/10/18 18:32:09 阅读更多 →
Vue+SpringBoot构建高并发在线拍卖系统实战

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

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

2026/10/17 8:12:57 阅读更多 →

最新新闻

Codex 常用插件全景指南:开发、办公与团队协作怎么选(TaoToken 统一 Key 接入版)

Codex 常用插件全景指南:开发、办公与团队协作怎么选(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/18 18:31:59 阅读更多 →
Octop项目不存在?Python工具链中常见命名混淆与验证方法

Octop项目不存在?Python工具链中常见命名混淆与验证方法

我无法根据当前输入生成符合要求的博文。原因如下:项目标题“Octop”缺乏明确指向:该词在主流技术生态中无广泛认知的对应项目。经核查,PyPI 上无名为octop的知名包;GitHub 上虽有少量零星仓库(如octop/前缀的私有工具…

2026/10/18 18:31:59 阅读更多 →
VTK 9.3中文学习环境搭建:源码级双语文档与可验证管线实践

VTK 9.3中文学习环境搭建:源码级双语文档与可验证管线实践

简介:本资源为VTK(Visualization Toolkit)官方用户指南第11版中文翻译PDF,面向科学可视化、医学影像处理、三维图形开发等领域的工程师与高校研究者,解决VTK系统性学习门槛高、英文文档阅读成本大的实际问题。全书系统…

2026/10/18 18:31:59 阅读更多 →
汇编语言入门:从寄存器、指令集到编译器底层实现

汇编语言入门:从寄存器、指令集到编译器底层实现

学编程这些年,我见过太多人一听到“汇编语言”这四个字就头皮发麻。在很多教材和课程里,它往往被安排到第二章——讲完基本概念之后,第一道需要真正面向底层的大门。说实话,我初学的时候拿到满是MOV、ADD、JMP的代码片段&#xff…

2026/10/18 18:31:59 阅读更多 →
企业微信审批外部选项对接全链路解析

企业微信审批外部选项对接全链路解析

简介:本资源是一套面向Java开发者的企业微信审批系统集成方案,聚焦解决审批表单中动态加载外部数据的典型需求,如通过API对接公司内部小区信息库实现下拉选项自动填充。适用于具备Spring Boot与企业微信JS-SDK开发经验的中高级工程师&#xf…

2026/10/18 18:31:59 阅读更多 →
Octop:MIT开源的Python协作一致性校验工具

Octop:MIT开源的Python协作一致性校验工具

1. 项目概述:Octop 是什么?它解决的不是“Python安装问题”,而是开发者日常协作中的真实痛点Octop 这个名字乍一听像某个海洋生物或科幻电影里的AI代号,但如果你在 GitHub 上搜过 MIT 相关仓库、翻过 PyPI 最近半年的热门新包、或…

2026/10/18 18:30:59 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →