news 2026/1/14 4:00:29

FastAPI 极简教程(偏实战,一篇搞定)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FastAPI 极简教程(偏实战,一篇搞定)

FastAPI 极简教程(偏实战,一篇搞定)

目标:用最少的概念把 FastAPI 的常用能力串起来:路由、参数、数据校验、依赖注入、错误处理、鉴权、数据库、测试、部署与 Docker。看完能直接起一个可用的小服务。
参考文档:FastAPI 官方文档、Starlette、Pydantic、Uvicorn 等(文末有链接)。

目录

文章目录

  • FastAPI 极简教程(偏实战,一篇搞定)
    • 目录
    • 1. FastAPI 是什么
    • 2. 安装与最小可运行项目
      • 2.1 环境准备
      • 2.2 目录结构(极简)
    • 3. 第一个接口:Hello World
    • 4. 路由与参数:Path、Query、Body
      • 4.1 Path 参数
      • 4.2 Query 参数
      • 4.3 参数约束(Query / Path)
      • 4.4 Body 参数(JSON 请求体)
    • 5. 数据模型与校验:Pydantic
    • 6. 响应模型与状态码
      • 6.1 用 response_model 控制输出
      • 6.2 自定义状态码
    • 7. 错误处理:HTTPException 与全局异常
      • 7.1 主动抛 HTTPException
      • 7.2 全局异常处理器(把内部异常变成统一结构)
    • 8. 依赖注入:Dependencies(FastAPI 的核心技巧)
      • 8.1 最简单的 Depends
      • 8.2 带参数的依赖:做权限校验
      • 8.3 依赖的“资源释放”:yield 写法
    • 9. 中间件、CORS、请求日志
      • 9.1 CORS
      • 9.2 简单请求耗时日志中间件
    • 10. 文件上传与静态文件
      • 10.1 上传文件
      • 10.2 静态文件
    • 11. 鉴权:API Key 与 JWT(OAuth2 密码模式)
      • 11.1 API Key(最短路径)
      • 11.2 JWT 思路(极简版)
    • 12. 数据库:SQLAlchemy + 会话依赖
      • 12.1 建库与模型(SQLite 示例)
      • 12.2 提供 Session 的依赖
      • 12.3 在接口里用 db
    • 13. 异步与并发:什么时候用 async
    • 14. 后台任务与定时任务的替代方案
      • 14.1 后台任务 BackgroundTasks(轻量场景)
      • 14.2 定时任务
    • 15. 测试:pytest + TestClient
    • 16. 部署:Uvicorn / Gunicorn / Docker
      • 16.1 直接用 Uvicorn(简单)
      • 16.2 Gunicorn + Uvicorn Worker(多进程)
      • 16.3 Docker(可复制粘贴)
    • 17. 一个小而完整的项目骨架
      • 17.1 路由拆分示例
    • 文末参考链接

1. FastAPI 是什么

FastAPI 是一个基于Starlette(Web 框架)Pydantic(数据校验)的 Python API 框架,主打:

  • 自动生成 OpenAPI 文档与交互式 Swagger UI
  • 类型标注驱动的数据校验与序列化
  • 天然支持 async
  • 依赖注入(Dependencies)很好用

这些能力都来自官方设计:FastAPI 建在 Starlette 之上,用 Pydantic 处理请求/响应数据模型。FastAPI 文档 对此有明确说明。


2. 安装与最小可运行项目

2.1 环境准备

建议:Python 3.10+(越新越好)。

安装 FastAPI 与 Uvicorn:

pipinstallfastapi uvicorn
  • uvicorn是常用的 ASGI Server,用来运行 FastAPI。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/12 10:26:53

PyQt5 解决弹窗后快捷键失效问题

import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QMenuBar, QMenu, QAction, QMessageBox from PyQt5.QtCore import Qt, QEvent, QTimerclass MainWindow(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle("菜单快捷键焦点保…

作者头像 李华
网站建设 2026/1/12 21:30:00

小白也能学会!2024-2025年RAG系统高精度实现指南,企业级应用必备收藏

本文系统分析了企业级RAG系统面临的五大挑战,包括历史数据过时、文档分块破坏上下文、向量检索局限、图表理解瓶颈和流程缺乏灵活性。针对这些问题,文章提出了多种解决方案:选择合适的LLM和嵌入模型、建立评估体系、采用混合检索与重排序技术…

作者头像 李华
网站建设 2026/1/12 18:46:28

RAG(检索增强生成)架构与原理:告别LLM“幻觉”的秘密武器

写在前面的话 RAG是什么?如果你还不清楚或是一知半解,不要紧,如果看完这篇文章,你还不会,算我输! 在人工智能飞速发展的今天,大型语言模型(LLM)以其强大的文本生成能力&a…

作者头像 李华
网站建设 2026/1/12 13:38:46

【接口测试】2_Dubbo接口 _Dubbo接口测试

文章目录一、RPC协议二、Dubbo是什么三、为什么要用dubbo四、dubbo架构五、微服务一、RPC协议 远程过程调用(Remote Procedure Call):就是一个节点请求另一个节点提供的服务。 常见的RPC框架有 Dubbo、Thrift、grpc 二、Dubbo是什么 Dubbo…

作者头像 李华
网站建设 2026/1/12 18:37:57

【计算机视觉CV:目标检测】--1.目标检测简介

目录 1.图像识别背景 1.1.图像识别三大任务 1.1.图像识别的发展 2.什么是目标检测 2.1.目标检测定义 2.1.1.物体 2.1.2.位置 2.2.目标检测的技术发展历史 3 目标检测应用场景 3.1 行业应用 3.2 应用类别 1.图像识别背景 1.1.图像识别三大任务 目标识别:…

作者头像 李华
网站建设 2026/1/13 5:30:00

mysql SQL子查询(史上最详细)

一、什么事子查询 SQL子查询(Subquery)是嵌套在其他SQL查询中的查询。 子查询可以用在SELECT、INSERT、UPDATE、DELETE语句中,以及在WHERE子句、HAVING子句或FROM子句中。 子查询可以返回一个值、一列值或多行多列值,根据这些返回…

作者头像 李华