一、FastAPI 简介什么是 FastAPIFastAPI 是一个现代、高性能、极简、易用的 Python Web 框架专门用来快速构建 API 服务。它基于 Python 最新特性开发被称为Python 最快的 Web 框架之一性能直逼 NodeJS 和 Go。FastAPI 核心特点超快速度性能接近 Go / Node自动生成文档自带 Swagger 和 ReDoc 交互式文档强类型校验利用 Python 类型提示自动校验数据支持异步可写 async/await 异步接口开箱即用极少代码就能完成生产级 API适用场景机器学习模型部署YOLO、Transformer、预测接口微服务与后台 API数据接口、数据分析平台高并发 IO 密集型服务快速上线的小型项目二、FastAPI 核心优势性能极高基于 Starlette异步 Web 框架 Pydantic数据校验速度排名FastAPI ≈ Starlette Flask Django开发效率翻倍不用写接口文档不用写参数校验自动处理 JSON 转换自动生成可调试的在线接口页面类型安全减少 BUG通过类型提示自动校验字符串、数字、枚举日期、路径、邮箱复杂嵌套结构错误请求会直接返回清晰的错误信息不会崩溃。三、FastAPI 安装与基础使用安装命令pipinstallfastapi uvicorn fastapi框架本体 uvicorn异步运行服务器最简单 API 示例main.pyfromfastapiimportFastAPI 创建应用 appFastAPI()定义路由首页app.get(/)defhome():return{message:Hello FastAPI!}启动服务uvicorn main:app--reload打开自动文档Swagger UI调试用http://127.0.0.1:8000/docsReDoc美观文档http://127.0.0.1:8000/redoc✅ 不用写文档框架自动生成四、路由与请求处理路径参数app.get(/user/{user_id})defget_user(user_id:int):return{user_id:user_id}查询参数app.get(/item)defget_item(name:str,price:float0):return{name:name,price:price}请求体最重要使用 Pydantic 模型自动校验frompydanticimportBaseModelclassItem(BaseModel):name:strprice:floatdesc:str|NoneNoneapp.post(/add_item)defadd_item(item:Item):return{item:item}文件上传fromfastapiimportFile,UploadFileapp.post(/upload)defupload(file:UploadFileFile(...)):return{filename:file.filename}五、响应模型与数据验证定义响应模型classItemResponse(BaseModel):name:strprice:floatapp.get(/item/{id},response_modelItemResponse)defget_item(id:int):return{name:苹果,price:5.0}自定义状态码fromfastapiimportstatusapp.post(/create,status_codestatus.HTTP_201_CREATED)defcreate():return{msg:创建成功}错误处理fromfastapiimportHTTPExceptionapp.get(/error)deftest_error():raiseHTTPException(status_code404,detail未找到数据)六、依赖注入系统FastAPI 灵魂功能什么是依赖注入把公共逻辑验证、数据库、登录写成可复用函数路由直接调用不用重复写代码。最简单依赖defcommon_params(name:str):return{name:name}app.get(/test)deftest(data:dictDepends(common_params)):returndata常用场景登录校验JWT数据库连接权限判断请求日志记录优势代码干净、易维护、易测试七、异步支持高性能关键异步路由app.get(/async)asyncdefasync_api():return{msg:异步接口}异步数据库异步 ORMTortoise/SQLAlchemy2.0asyncdefget_data():# 异步查询数据库returndata什么时候用异步IO 密集型查询数据库、请求第三方接口高并发场景机器学习模型部署异步能让服务支持更多并发、更快响应。八、中间件与高级功能自定义中间件记录请求时间fromfastapiimportRequestapp.middleware(http)asyncdeflog_time(request:Request,call_next):responseawaitcall_next(request)print(请求路径:,request.url.path)returnresponse跨域配置CORSfromfastapi.middleware.corsimportCORSMiddleware app.add_middleware(CORSMiddleware,allow_origins[*],allow_credentialsTrue,allow_methods[*],allow_headers[*],)后台任务fromfastapiimportBackgroundTasksdefwrite_log():print(后台执行任务)app.get(/bg)defbg_task(background_tasks:BackgroundTasks):background_tasks.add_task(write_log)return{msg:后台运行中}WebSocket 支持fromfastapiimportWebSocketapp.websocket(/ws)asyncdefwebsocket(ws:WebSocket):awaitws.accept()awaitws.send_text(连接成功)九、测试与部署测试用例Pytestfromfastapi.testclientimportTestClient clientTestClient(app)deftest_home():resclient.get(/)assertres.status_code200生产环境运行gunicorn main:app-w4-kuvicorn.workers.UvicornWorkerDocker 部署最常用FROM python:3.11 WORKDIR /app COPY..RUN pipinstall-rrequirements.txt CMD[uvicorn,main:app,--host,0.0.0.0]十、FastAPI 生态与扩展FastAPI Users用户登录、注册、JWT 认证FastAPI Cache接口缓存SQLAlchemy / Tortoise数据库 ORMBeanieMongoDB 异步 ORMCelery异步任务队列十一、实际案例最实用案例 1CRUD 接口增删改查省略模型定义app.get(/items)defget_items():...app.post(/items)defcreate_item():...app.put(/items/{id})defupdate_item():...app.delete(/items/{id})defdelete_item():...案例 2JWT 登录认证生成 token、校验 token、权限控制案例 3机器学习模型部署YOLO / 预测接口app.post(/predict)defpredict(img:UploadFile):resultmodel.predict(img)returnresult✅ 这是目前工业界最常用的部署方式十二、FastAPI vs 其他框架FastAPI vs FlaskFastAPI更快、自动文档、异步、类型校验Flask更轻量、生态老、适合简单项目结论新项目优先 FastAPIFastAPI vs DjangoDjango大而全、适合后台管理系统FastAPI极简、高性能、适合 API 服务结论微服务用 FastAPI十三、未来发展趋势云原生、Docker、K8s 首选框架机器学习部署标配异步生态越来越完善逐渐成为 Python Web 主流框架
FastAPI 核心技术与实战
发布时间:2026/5/28 9:23:00
一、FastAPI 简介什么是 FastAPIFastAPI 是一个现代、高性能、极简、易用的 Python Web 框架专门用来快速构建 API 服务。它基于 Python 最新特性开发被称为Python 最快的 Web 框架之一性能直逼 NodeJS 和 Go。FastAPI 核心特点超快速度性能接近 Go / Node自动生成文档自带 Swagger 和 ReDoc 交互式文档强类型校验利用 Python 类型提示自动校验数据支持异步可写 async/await 异步接口开箱即用极少代码就能完成生产级 API适用场景机器学习模型部署YOLO、Transformer、预测接口微服务与后台 API数据接口、数据分析平台高并发 IO 密集型服务快速上线的小型项目二、FastAPI 核心优势性能极高基于 Starlette异步 Web 框架 Pydantic数据校验速度排名FastAPI ≈ Starlette Flask Django开发效率翻倍不用写接口文档不用写参数校验自动处理 JSON 转换自动生成可调试的在线接口页面类型安全减少 BUG通过类型提示自动校验字符串、数字、枚举日期、路径、邮箱复杂嵌套结构错误请求会直接返回清晰的错误信息不会崩溃。三、FastAPI 安装与基础使用安装命令pipinstallfastapi uvicorn fastapi框架本体 uvicorn异步运行服务器最简单 API 示例main.pyfromfastapiimportFastAPI 创建应用 appFastAPI()定义路由首页app.get(/)defhome():return{message:Hello FastAPI!}启动服务uvicorn main:app--reload打开自动文档Swagger UI调试用http://127.0.0.1:8000/docsReDoc美观文档http://127.0.0.1:8000/redoc✅ 不用写文档框架自动生成四、路由与请求处理路径参数app.get(/user/{user_id})defget_user(user_id:int):return{user_id:user_id}查询参数app.get(/item)defget_item(name:str,price:float0):return{name:name,price:price}请求体最重要使用 Pydantic 模型自动校验frompydanticimportBaseModelclassItem(BaseModel):name:strprice:floatdesc:str|NoneNoneapp.post(/add_item)defadd_item(item:Item):return{item:item}文件上传fromfastapiimportFile,UploadFileapp.post(/upload)defupload(file:UploadFileFile(...)):return{filename:file.filename}五、响应模型与数据验证定义响应模型classItemResponse(BaseModel):name:strprice:floatapp.get(/item/{id},response_modelItemResponse)defget_item(id:int):return{name:苹果,price:5.0}自定义状态码fromfastapiimportstatusapp.post(/create,status_codestatus.HTTP_201_CREATED)defcreate():return{msg:创建成功}错误处理fromfastapiimportHTTPExceptionapp.get(/error)deftest_error():raiseHTTPException(status_code404,detail未找到数据)六、依赖注入系统FastAPI 灵魂功能什么是依赖注入把公共逻辑验证、数据库、登录写成可复用函数路由直接调用不用重复写代码。最简单依赖defcommon_params(name:str):return{name:name}app.get(/test)deftest(data:dictDepends(common_params)):returndata常用场景登录校验JWT数据库连接权限判断请求日志记录优势代码干净、易维护、易测试七、异步支持高性能关键异步路由app.get(/async)asyncdefasync_api():return{msg:异步接口}异步数据库异步 ORMTortoise/SQLAlchemy2.0asyncdefget_data():# 异步查询数据库returndata什么时候用异步IO 密集型查询数据库、请求第三方接口高并发场景机器学习模型部署异步能让服务支持更多并发、更快响应。八、中间件与高级功能自定义中间件记录请求时间fromfastapiimportRequestapp.middleware(http)asyncdeflog_time(request:Request,call_next):responseawaitcall_next(request)print(请求路径:,request.url.path)returnresponse跨域配置CORSfromfastapi.middleware.corsimportCORSMiddleware app.add_middleware(CORSMiddleware,allow_origins[*],allow_credentialsTrue,allow_methods[*],allow_headers[*],)后台任务fromfastapiimportBackgroundTasksdefwrite_log():print(后台执行任务)app.get(/bg)defbg_task(background_tasks:BackgroundTasks):background_tasks.add_task(write_log)return{msg:后台运行中}WebSocket 支持fromfastapiimportWebSocketapp.websocket(/ws)asyncdefwebsocket(ws:WebSocket):awaitws.accept()awaitws.send_text(连接成功)九、测试与部署测试用例Pytestfromfastapi.testclientimportTestClient clientTestClient(app)deftest_home():resclient.get(/)assertres.status_code200生产环境运行gunicorn main:app-w4-kuvicorn.workers.UvicornWorkerDocker 部署最常用FROM python:3.11 WORKDIR /app COPY..RUN pipinstall-rrequirements.txt CMD[uvicorn,main:app,--host,0.0.0.0]十、FastAPI 生态与扩展FastAPI Users用户登录、注册、JWT 认证FastAPI Cache接口缓存SQLAlchemy / Tortoise数据库 ORMBeanieMongoDB 异步 ORMCelery异步任务队列十一、实际案例最实用案例 1CRUD 接口增删改查省略模型定义app.get(/items)defget_items():...app.post(/items)defcreate_item():...app.put(/items/{id})defupdate_item():...app.delete(/items/{id})defdelete_item():...案例 2JWT 登录认证生成 token、校验 token、权限控制案例 3机器学习模型部署YOLO / 预测接口app.post(/predict)defpredict(img:UploadFile):resultmodel.predict(img)returnresult✅ 这是目前工业界最常用的部署方式十二、FastAPI vs 其他框架FastAPI vs FlaskFastAPI更快、自动文档、异步、类型校验Flask更轻量、生态老、适合简单项目结论新项目优先 FastAPIFastAPI vs DjangoDjango大而全、适合后台管理系统FastAPI极简、高性能、适合 API 服务结论微服务用 FastAPI十三、未来发展趋势云原生、Docker、K8s 首选框架机器学习部署标配异步生态越来越完善逐渐成为 Python Web 主流框架