目录(点击跳转)
1. 为什么 FastAPI 性能极高
1.1 底层基于 Starlette(高性能 ASGI 框架)
- 支持完整异步请求处理
- 路由匹配算法极快,时间复杂度低
- 原生支持 WebSocket、HTTP/2
1.2 原生异步非阻塞
- 支持
async def异步视图 - IO 等待时自动切换任务
- 单线程可处理高并发请求
- 特别适合 API 接口、微服务、高并发服务
1.3 基于 Pydantic 强类型校验
- 使用 Python 类型注解自动完成参数校验
- C 语言级别效率,比纯 Python 校验快 10~100 倍
- 自动转换参数类型,减少异常
1.4 无运行时开销
- 代码启动时完成路由、校验、依赖解析
- 请求时无额外解析损耗
- 性能接近 Go / Node.js
1.5 自动生成 OpenAPI 文档
- 无需手写文档、Swagger / ReDoc 自动生成
- 支持在线调试,提升开发效率
- 不影响运行性能
1.6 面试必背总结
FastAPI 高性能 = ASGI 异步架构 + Starlette 路由 + Pydantic 类型校验 + 无运行时开销
2. 依赖注入系统
2.1 什么是依赖注入
- 函数/路由执行前,自动完成参数准备
- 代码解耦、复用性强、易于测试
- 是 FastAPI 最核心的设计之一
2.2 依赖级别
- 路由级别:单个接口依赖
- 路由组级别:APIRouter 前缀依赖
- 全局级别:所有接口生效依赖
2.3 企业级使用场景
- 数据库连接获取与释放
- 用户认证、Token 解析
- 权限校验
- 请求日志记录
- 接口限流、IP 黑白名单
- 全局配置读取
2.4 面试必说优势
- 消除重复代码
- 统一控制入口
- 方便单元测试
- 异步同步兼容
3. 中间件、CORS、全局异常处理
3.1 中间件
- 全局拦截请求与响应
- 使用场景:请求计时、日志、白名单、限流
- 基于 Starlette 中间件,性能极高
3.2 CORS 跨域配置
- 原生支持跨域,无需第三方库
- 配置允许源、方法、请求头、Cookie
- 前后端分离必备
3.3 全局异常捕获
- 统一捕获:请求异常、参数异常、业务异常、数据库异常
- 自定义异常处理器
- 防止服务直接崩溃
3.4 统一返回格式
- 所有接口固定结构:code + msg + data
- 前端统一处理逻辑
- 便于监控、日志、排查问题
3.5 面试扩展
- 异常处理必须覆盖:400/401/403/404/500
- 敏感信息不返回给前端
- 异常必须记录日志
4. BackgroundTasks 后台任务
4.1 作用
请求响应完成后,再异步执行任务,不阻塞前端返回
4.2 适用场景
- 报告生成通知
- 短信/邮件/推送发送
- 操作日志记录
- 轻量级数据统计
4.3 优点
- 简单易用,无需额外组件
- 集成在请求内,可直接使用请求数据
4.4 严重注意(面试必问)
- 不适合大型、耗时任务
- 请求结束后进程关闭,任务会中断
- 不能替代 Celery
- 生产环境:
- 小任务 → BackgroundTasks
- 大任务(PDF、导出、同步)→ Celery
4.5 企业实践
报告生成、大文件导出 → Celery 简单日志、通知 → BackgroundTasks
5. FastAPI 高频面试扩展知识点
5.1 ASGI 与 WSGI 区别
- WSGI:同步,Django/Flask 使用
- ASGI:异步+同步,支持 WebSocket/长连接
- FastAPI 是 ASGI 框架,所以支持高并发
5.2 路由系统
- 支持路径参数、查询参数、请求体、Header、Cookie
- 自动校验、自动类型转换
- 支持路由前缀、标签
5.3 Pydantic 核心价值
- 请求/响应模型严格校验
- 自动生成接口文档
- 嵌套模型、枚举、正则、自定义校验
5.4 FastAPI vs Django vs Flask
- Flask:轻量,无内置异步、无文档、无校验
- Django:全栈,Admin强大,性能一般
- FastAPI:高性能API,异步,自动文档,类型安全,微服务首选
5.5 生产部署
- 使用 Uvicorn/Gunicorn 运行
- 支持多进程
- 配合 Nginx 代理
- 适合 Docker 容器化部署
5.6 面试必背总结
FastAPI 是高性能异步 API 框架,适合微服务、高并发、医疗接口、算法接口; 依赖注入、Pydantic、异步IO 是三大核心; BackgroundTasks 只做轻量任务, heavy 任务必须用 Celery。
评论区