侧边栏壁纸
博主头像
ZOUXS的空间博主等级

人生苦短,我学python

  • 累计撰写 23 篇文章
  • 累计创建 24 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

FastAPI 知识点

zouxs
2026-05-22 / 0 评论 / 0 点赞 / 4 阅读 / 5966 字
温馨提示:
本文最后更新于 2026-05-22,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

目录(点击跳转)

  1. 为什么 FastAPI 性能极高
  2. 依赖注入系统
  3. 中间件、CORS、全局异常处理
  4. BackgroundTasks 后台任务
  5. FastAPI 高频面试扩展知识点

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 依赖级别

  1. 路由级别:单个接口依赖
  2. 路由组级别:APIRouter 前缀依赖
  3. 全局级别:所有接口生效依赖

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。

相关链接

0

评论区