FastAPI 是不是 Python 开发高性能 Web 应用的框架?

摘要:1 FastAPI 框架 核心认知:FastAPI 的本质优势 FastAPI 不是"另一个 Flask",它的设计哲学是"声明式编程"
1 FastAPI 框架 核心认知:FastAPI 的本质优势 FastAPI 不是"另一个 Flask",它的设计哲学是"声明式编程"——你描述数据长什么样,框架自动处理验证、序列化、文档生成。 Pydantic 模型:数据的第一道防线 核心思想:用 Python 类定义数据结构,自动获得验证能力。 详情参见: Python Pydantic 库 = Python 类型提示 + 自动数据校验 + 数据转换 - 博客园/千千寰宇 基础示例 from pydantic import BaseModel, Field, EmailStr from typing import Optional from datetime import datetime class CreateUserRequest(BaseModel): """创建用户的请求模型""" name: str = Field(min_length=2, max_length=50, description="用户名") email: EmailStr # 自动验证邮箱格式 age: int = Field(ge=13, le=120, description="年龄范围") # 边界检查 password: str = Field(min_length=8, description="密码长度") bio: Optional[str] = Field(None, max_length=500) # 可选字段 class UserResponse(BaseModel): """返回给客户端的数据模型(隐藏敏感信息)""" id: int name: str email: str created_at: datetime # 注意:这里不包含 password! 易错点: ❌ 混淆 CreateUserRequest 和 UserResponse——前者接收输入,后者控制输出,安全的关键 ❌ 忘记 Optional 或默认值,导致字段变成必填 路径操作:定义 API 端点 from fastapi import FastAPI, HTTPException, Path, Query app = FastAPI() # 路径参数 + 查询参数 + 请求体 @app.post("/users/", response_model=UserResponse, status_code=201) async def create_user( user: CreateUserRequest, # 请求体自动解析为 Pydantic 对象 referral_code: Optional[str] = Query(None, description="推荐码") # 查询参数 ): """ 创建新用户 - FastAPI 自动验证 user 是否符合 UserCreate 规则 - 验证失败时返回 422 错误,无需手动编写 - response_model 确保只返回 UserResponse 定义的字段 """ # 模拟数据库操作 if email_exists(user.email): raise HTTPException(status_code=400, detail="邮箱已被注册") new_user = save_to_db(user) return new_user # 自动转换为 JSON,过滤敏感字段 关键概念: 依赖注入(Depends):这是 FastAPI 的杀手级特性,大二阶段必须掌握 依赖注入系统(核心难点) 为什么要用? 避免在每个端点重复写数据库连接、认证逻辑,实现"关注点分离"。
阅读全文