编程

FastAPI

试用

FastAPI - 高性能 Python Web API 框架

它能做什么

本技能帮助开发者使用 FastAPI 构建现代化、高性能的 Web API,支持以下场景:

技能文档

FastAPI 高性能 Python Web API 框架

技能概述

本技能帮助开发者使用 FastAPI 构建现代化、高性能的 Web API,支持以下场景:

  • REST API 开发: 快速构建符合 OpenAPI 标准的 RESTful 接口
  • 数据验证: 基于 Pydantic 的自动请求/响应数据验证
  • 自动文档: 自动生成 Swagger UI 和 ReDoc 交互式 API 文档
  • 异步支持: 原生支持 async/await,处理高并发场景
  • 依赖注入: 强大的依赖注入系统,简化认证、数据库连接等公共逻辑
  • 安全认证: 内置 OAuth2、JWT、API Key 等认证方案

技术基础: FastAPI 构建于 Starlette(Web 框架层)和 Pydantic(数据验证层)之上,性能接近 NodeJS 和 Go。

架构概览

FastAPI 应用架构
├── app/
│   ├── main.py              # 应用入口,注册路由和中间件
│   ├── dependencies.py      # 公共依赖(认证、数据库会话等)
│   ├── models/              # Pydantic 数据模型
│   │   ├── __init__.py
│   │   └── user.py
│   ├── routers/             # 路由模块(按业务划分)
│   │   ├── __init__.py
│   │   ├── users.py
│   │   └── items.py
│   ├── crud/                # 数据库操作层
│   │   ├── __init__.py
│   │   └── user.py
│   └── core/                # 核心配置
│       ├── config.py
│       └── security.py

核心概念

概念说明
路径操作使用 @app.get/post/put/delete 装饰器定义 API 端点
路径参数URL 中的变量,如 /items/{item_id}
查询参数URL 查询字符串,如 /items?skip=0&limit=10
请求体通过 Pydantic 模型接收 JSON 数据
依赖注入通过 Depends() 注入可复用的依赖函数
中间件处理每个请求/响应的通用逻辑
路由器APIRouter 将路由按模块组织,类似 Flask Blueprint

使用流程

AI 助手将引导你完成以下步骤:

  1. 安装 FastAPI 及依赖(uvicorn、pydantic 等)
  2. 创建应用入口文件 main.py
  3. 定义 Pydantic 数据模型
  4. 编写路径操作函数(路由处理器)
  5. 配置依赖注入和中间件
  6. 启动开发服务器并验证 API 文档

关键章节导航

  • 安装指南
  • 快速开始
  • 高级用法
  • 常见问题

AI 助手能力

当你向 AI 描述需求时,AI 会:

  • 自动生成 路由处理函数和 Pydantic 数据模型
  • 自动配置 依赖注入(数据库会话、用户认证)
  • 自动搭建 项目骨架结构(models、routers、crud 分层)
  • 自动实现 JWT 认证和 OAuth2 安全方案
  • 自动集成 SQLAlchemy/SQLModel 数据库操作
  • 自动编写 测试用例(pytest + httpx)
  • 自动处理 CORS 配置和自定义中间件

核心功能

  • ✅ 基于 Python 类型提示的自动数据验证
  • ✅ 自动生成 OpenAPI/Swagger 交互式文档
  • ✅ 原生 async/await 异步支持
  • ✅ 强大的依赖注入系统
  • ✅ 内置安全认证(OAuth2、JWT、API Key、HTTP Basic)
  • ✅ 支持 WebSocket 实时通信
  • ✅ 支持 GraphQL(通过 Strawberry 集成)
  • ✅ 支持后台任务(BackgroundTasks)
  • ✅ 支持文件上传和静态文件服务
  • ✅ 支持中间件和 CORS 配置

快速示例

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    price: float
    is_offer: bool | None = None

@app.get("/")
async def read_root():
    return {"Hello": "World"}

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str | None = None):
    return {"item_id": item_id, "q": q}

@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item):
    return {"item_name": item.name, "item_id": item_id}
# 启动开发服务器
fastapi dev main.py

# 或使用 uvicorn
uvicorn main:app --reload

访问 http://127.0.0.1:8000/docs 查看自动生成的交互式 API 文档。

扩展点

  • 中间件: 实现日志、限流、请求追踪等横切关注点
  • 依赖注入: 封装数据库连接、权限校验等可复用逻辑
  • 事件处理: startup/shutdown 生命周期钩子
  • 自定义响应: 支持 JSONResponseHTMLResponseFileResponse
  • 插件生态: 支持 SQLAlchemy、Celery、Redis、S3 等主流库

环境要求

  • Python 3.8 或更高版本(推荐 3.11+)
  • pip 包管理器
  • (可选)虚拟环境工具(venv、conda、uv)

许可证

MIT License

项目链接

相关技能

用 Python 自适应抓取网页,默认绕过反爬保护,支持从单次请求到大规模并发爬取。

作者 d4vinci399 次安装28 星标

把自然语言描述转为结构化 JSON,并由 mcp-diagram-generator MCP 服务生成 Draw.io、Mermaid 或 Excalidraw 图表文件。

作者 nssa.io1.0k 次安装47 星标

通过 6551 REST API 查询 Twitter/X 用户资料、推文、粉丝事件与 KOL 数据。

作者 infra403840 次安装27 星标

在本地磁盘以分类纯 Markdown 文件保存需要长期留存的事实,与智能体内置记忆并存。

作者 Iván555 次安装18 星标

以 AI 机器人身份加入视频会议,提供语音、虚拟形象与屏幕共享四种模式。

作者 johnpatternai21 次安装8 星标

cn-big-cabbage 的更多技能

浏览全部技能

高性能自适应 Python 网页抓取框架,内置反爬虫绕过(Cloudflare Turnstile)、智能元素重定位、完整爬虫框架和 MCP 服务器,适合 AI 辅助数据提取和大规模爬取任务

作者 cn-big-cabbage21 次安装

用 React 代码程序化生成视频的框架,支持 CSS/Canvas/SVG/WebGL,可部署到 Lambda/Cloud Run 大规模渲染,适合创意视频生成、数据可视化视频和个性化视频批量生产

作者 cn-big-cabbage17 次安装1 星标

从零构建的轻量级无头浏览器,专为 AI 智能体和自动化设计,比 Headless Chrome 快 9 倍、内存占用低 16 倍,兼容 CDP 和 Playwright/Puppeteer,内置 MCP 服务器

作者 cn-big-cabbage18 次安装

Chrome DevTools MCP 服务器,让 AI 编码助手(Claude Code、Cursor、Copilot)直接控制和调试真实 Chrome 浏览器,实现截图、性能分析、网络请求检查、控制台调试和自动化操作

作者 cn-big-cabbage19 次安装

Claude Code 多智能体编排平台,部署 100+ 专业 AI 智能体协同工作,通过蜂群拓扑(层级/网状/环形/星形)协调自主工作流,内置自学习、向量记忆和原生 MCP 集成

作者 cn-big-cabbage22 次安装

Google 出品的 Python 库,用 LLM 从非结构化文本中提取结构化信息,每个提取结果精确对应源文本位置,支持交互式可视化,适配 Gemini/OpenAI/Ollama 等多种模型

作者 cn-big-cabbage18 次安装