Learning Path
浏览 FastAPI 相关教程与章节。
PHP、Node.js、Java Web、Python Web 框架、API 与服务端开发。
教程
40
FastAPI 教程 FastAPI 是一个用于构建 API 的现代、快速(高性能)的 Python Web 框架,专为构建 RESTful API 而设计。 FastAPI 使用 Python 3.8+ 并基于标准的 Python 类型提示,使用 Starlette 和 Pydantic 构建,能够自动生成 API 文档并进行数据校验。 谁适合阅读本教程? 本教程适合有 Python 基础的开发者学习。如果你已经了解 Pyt..
FastAPI 交互式 API 文档 FastAPI 基于代码中的类型注解自动生成交互式 API 文档,默认提供 Swagger UI 和 ReDoc 两种界面。开发者可以直接在文档中测试 API,无需额外的工具。 访问 API 文档 运行 FastAPI 应用后,访问以下地址查看文档: 地址文档类型特点 http://127.0.0.1:8000/docsSwagger UI可交互测试,点击'Try it out�..
Alembic 数据库迁移 本章你将学会用 Alembic 管理数据库结构变更,理解与 Django Migration、Flask-Migrate 的异同。 为什么需要迁移工具? Base.metadata.create_all() 同样有致命缺陷:只在表不存在时创建,修改已有表结构不会自动同步。 Alembic 是 SQLAlchemy 官方的迁移工具,Django 的 makemigrations/migrate 和 Fla..
打包上线 — 部署到 Railway 本章你将学会 FastAPI 的生产环境配置,并用 Railway 将博客部署上线。 生产环境配置管理 (venv) $ pip install pydantic-settings python-dotenv 实例 [mycode4 type='python'] # 文件路径:config.py from pydantic_settings import Bas..
收藏功能与后台管理 本章你将学会用多对多关系实现收藏功能,并用 sqladmin 搭建后台管理。 多对多关系设计 实例 [mycode4 type='python'] # 文件路径:models.py 新增关联表和修改 Post 模型 from sqlalchemy import Table # 关联表:User 和 Post 的多对多中间表 favorites = Table( 'f..
Jinja2 模板 本章你将学会在 FastAPI 中配置 Jinja2 模板引擎,用静态文件和模板继承构建完整的 HTML 页面。 FastAPI 的两种渲染模式 FastAPI 默认返回 JSON(适合 API),但也能返回 HTML(适合 SSR)。 两种模式可以共存——同一个项目既可以提供 JSON API,也可以渲染网页。 挂载静态文件 静态文件(CSS、JS、图片)通过 StaticFiles 挂载到指定路径。 ..
用户系统 — 注册、登录、JWT 认证 本章你将学会 FastAPI 的 JWT 认证方案,理解它和 Django/Flask Session 认证的区别。 JWT vs Session 认证 Django 和 Flask 用的是 Session 认证:服务器存储用户状态,Cookie 中只存 Session ID。 FastAPI 推荐 JWT 认证:用户登录后获得一个 Token(令牌),后续请求携带 Token 即可认证。 ..
FastAPI Web 应用 本章带你从零开始,用 FastAPI 创建第一个 Web 应用,体验自动生成的 API 文档。 FastAPI 与 Django/Flask 的定位差异 FastAPI 是 Python Web 框架中的新星,定位介于 Django 和 Flask 之间。 特性DjangoFlaskFastAPI 设计哲学电池全包微框架,按需扩展高性能,类型驱动 异步支持3.1+ 开始支持无原生支持原生 asy..
Pydantic Schema — 数据验证与序列化 本章你将学会 Pydantic Schema,理解它与 ORM 模型的职责分离,这是 FastAPI 最核心的特性。 为什么需要 Schema? ORM 模型(models.py)定义数据库结构,但不能直接用于 API 的请求/响应校验。 原因:ORM 模型包含数据库专用逻辑(如 relationship),且不希望将所有字段暴露给 API。 Pydantic Schema ..
路由与文章列表、详情页 本章你将学会用 APIRouter 拆分路由,实现首页文章列表和文章详情页。 APIRouter — FastAPI 的路由拆分方案 APIRouter 对标 Flask 的 Blueprint 和 Django 的 include()。 实例 [mycode4 type='python'] # 文件路径:routers/posts.py from fastapi import A..
关键词搜索与分页 本章你将学会用 SQLAlchemy 实现联合搜索,并用 offset/limit 实现分页。 ilike 大小写不敏感搜索 实例 [mycode4 type='python'] # 单字段搜索 posts = db.query(Post).filter(Post.title.ilike(f'%{keyword}%')).all() # 多字段联合搜索(OR 关系)..
SQLAlchemy 模型 — 设计数据库表 本章你将学会用原生 SQLAlchemy ORM 定义数据模型,并通过 FastAPI 依赖注入管理数据库会话。 FastAPI 为什么不用自带 ORM? Django 有内置 ORM,Flask 推荐 Flask-SQLAlchemy。 FastAPI 没有内置 ORM——它希望你选择最适合的工具,SQLAlchemy + Pydantic 是社区公认的最佳组合。 (venv) ..
FastAPI 请求体字段与嵌套模型 在 Pydantic 模型内部,你可以使用 Field 为字段声明校验规则和元数据,也可以将模型嵌套使用来处理复杂的 JSON 数据结构。 使用 Field 声明字段校验 与路径操作函数中使用 Query、Path 声明校验的方式一样,Pydantic 模型内部使用 Field 声明字段校验: 实例 [mycode4 type='python'] from typing..
FastAPI 核心概念 FastAPI 是一个现代、快速(高性能)的 Python Web 框架,用于构建 API。它基于标准 Python 类型提示,使用 Starlette 和 Pydantic 构建。 主要特点 高性能:与 NodeJS 和 Go 相当,是最快的 Python 框架之一 快速开发:开发速度提高约 200%-300% 减少错误:减少约 40% 的人为错误 直观:强大的编辑器支持,自动补全无处不在 简单:易于使用..
FastAPI CORS 跨域 CORS(Cross-Origin Resource Sharing,跨域资源共享)是一种安全机制,允许或限制网页从不同域名请求资源。当前后端分离开发时,前端页面通常运行在不同的域名或端口上,需要配置 CORS 才能正常访问后端 API。 什么是跨域问题 浏览器的同源策略限制了网页向不同域名发送请求。例如: 前端地址后端 API 地址是否跨域 http://localhost:3000http://..
FastAPI 错误处理 在 API 开发中,需要向客户端返回错误信息。FastAPI 提供了 HTTPException 来抛出 HTTP 错误,也支持自定义异常处理器来处理更复杂的错误场景。 使用 HTTPException 当需要返回错误响应时,抛出 HTTPException: 实例 [mycode4 type='python'] from fastapi import FastAPI, HTTPE..
FastAPI 文件上传 FastAPI 提供了 File 和 UploadFile 两种方式来处理文件上传,支持单独上传文件和表单与文件混合上传。 安装依赖 文件上传同样依赖 python-multipart: pip install python-multipart 使用 UploadFile UploadFile 是推荐的方式,它提供了更丰富的文件信息访问接口: 实例 [mycode4 type='pyth..
FastAPI 表单数据 当客户端通过 HTML 表单(application/x-www-form-urlencoded)提交数据时,需要使用 Form 来接收表单字段,而不是 BaseModel。 安装 python-multipart 使用表单功能前,需要先安装 python-multipart: pip install python-multipart 接收表单数据 使用 Form 声明表单字段: 实例 [myco..
FastAPI 请求头与 Cookie FastAPI 提供了 Header 和 Cookie 类型,用于从 HTTP 请求头和 Cookie 中获取数据。 请求头参数 使用 Header 声明请求头参数: 实例 [mycode4 type='python'] from typing import Annotated from fastapi import FastAPI, Header app = Fa..
FastAPI 安装与环境配置 FastAPI 依赖 Python 3.8 及更高版本。本节介绍如何安装 FastAPI 以及配置开发环境。 检查 Python 版本 在安装 FastAPI 之前,先确认你的 Python 版本: $ python --version Python 3.11.0 # 或者 $ python3 --version Python 3.11.0 如果你的 Python 版本低于 3.8,请先升级 Pyt..
FastAPI 中间件 中间件是一种在每个请求到达路由处理函数之前和之后执行的函数。 中间件可以用于添加日志、修改请求/响应、处理 CORS 等通用逻辑。 中间件的工作原理 中间件的执行流程: 请求到达中间件 中间件执行预处理逻辑 中间件将请求传递给下一个中间件或路由函数 路由函数返回响应 中间件执行后处理逻辑 响应返回给客户端 名称 作用 ..
FastAPI 依赖注入 FastAPI 提供了一个强大而简洁的依赖注入系统。依赖注入是一种设计模式,让你可以将通用的逻辑(如数据库连接、身份验证、参数校验等)提取为可复用的组件,然后在路由中按需使用。 什么是依赖注入 简单来说,依赖就是一个函数,它可以使用与路径操作函数相同的参数(查询参数、路径参数、请求体等),FastAPI 会在执行路由函数之前自动调用依赖函数,并将其返回值传递给路由函数。 实例 [mycode4 ty..
FastAPI 路径参数数值校验 与查询参数使用 Query 添加校验的方式相同,你可以使用 Path 为路径参数声明数值校验和元数据。 导入 Path 从 fastapi 导入 Path,从 typing 导入 Annotated: 实例 [mycode4 type='python'] from typing import Annotated from fastapi import FastAPI, Pa..
FastAPI 路径参数 路径参数是 URL 路径中的动态部分,使用花括号 {} 声明。FastAPI 会自动将路径参数传递给路径操作函数,并根据类型注解进行数据转换和校验。 基本用法 使用 Python 格式化字符串的语法声明路径参数: 实例 [mycode4 type='python'] from fastapi import FastAPI app = FastAPI() # {item_id} ..