news 2026/7/14 10:00:52

FastAPI 学习指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FastAPI 学习指南

FastAPI 学习指南

FastAPI 是一个现代、快速(高性能)的 Python Web 框架,用于构建 API。它基于 Python 类型提示,支持异步编程,并自动生成交互式 API 文档。以下是学习 FastAPI 的关键内容和方法。

核心概念

安装 FastAPI
使用 pip 安装 FastAPI 和 Uvicorn(ASGI 服务器):

pipinstallfastapi uvicorn

创建第一个 API
创建一个简单的 FastAPI 应用:

fromfastapiimportFastAPI app=FastAPI()@app.get("/")defread_root():return{"Hello":"World"}

运行应用:

uvicorn main:app --reload

路由和请求处理

路径参数
使用路径参数动态处理请求:

@app.get("/items/{item_id}")defread_item(item_id:int):return{"item_id":item_id}

查询参数
处理查询参数:

@app.get("/items/")defread_items(skip:int=0,limit:int=10):return{"skip":skip,"limit":limit}

请求体和模型

使用 Pydantic 模型
定义数据模型并验证请求体:

frompydanticimportBaseModelclassItem(BaseModel):name:strdescription:str=Noneprice:floattax:float=None@app.post("/items/")defcreate_item(item:Item):returnitem

异步支持

异步路由
FastAPI 支持异步函数:

@app.get("/async/")asyncdefread_async():return{"message":"Async endpoint"}

自动文档

交互式 API 文档
FastAPI 自动生成 Swagger UI 和 ReDoc 文档:

  • Swagger UI:http://127.0.0.1:8000/docs
  • ReDoc:http://127.0.0.1:8000/redoc

依赖注入

依赖注入系统
使用依赖注入管理共享逻辑:

fromfastapiimportDependsdefcommon_parameters(q:str=None,skip:int=0,limit:int=100):return{"q":q,"skip":skip,"limit":limit}@app.get("/items/")asyncdefread_items(commons:dict=Depends(common_parameters)):returncommons

中间件

添加中间件
使用中间件处理请求和响应:

fromfastapiimportRequest@app.middleware("http")asyncdefadd_process_time_header(request:Request,call_next):response=awaitcall_next(request)response.headers["X-Custom-Header"]="FastAPI"returnresponse

安全性和认证

OAuth2 和 JWT
实现基于 OAuth2 和 JWT 的认证:

fromfastapi.securityimportOAuth2PasswordBearer oauth2_scheme=OAuth2PasswordBearer(tokenUrl="token")@app.get("/users/me")asyncdefread_current_user(token:str=Depends(oauth2_scheme)):return{"token":token}

数据库集成

SQLAlchemy 集成
使用 SQLAlchemy 连接数据库:

fromsqlalchemyimportcreate_enginefromsqlalchemy.ext.declarativeimportdeclarative_basefromsqlalchemy.ormimportsessionmaker SQLALCHEMY_DATABASE_URL="sqlite:///./test.db"engine=create_engine(SQLALCHEMY_DATABASE_URL)SessionLocal=sessionmaker(autocommit=False,autoflush=False,bind=engine)Base=declarative_base()

测试和部署

测试 FastAPI 应用
使用 TestClient 编写测试:

fromfastapi.testclientimportTestClient client=TestClient(app)deftest_read_root():response=client.get("/")assertresponse.status_code==200

部署
使用 Uvicorn 或 Gunicorn 部署:

uvicorn main:app --host0.0.0.0 --port8000

学习资源

  • 官方文档:https://fastapi.tiangolo.com/
  • GitHub 仓库:https://github.com/tiangolo/fastapi
  • 教程和示例:https://fastapi.tiangolo.com/tutorial/

通过以上内容,可以快速掌握 FastAPI 的核心功能并构建高效的 API 应用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/4 17:08:02

AI绘图:快速出好图的核心技巧与常见误区

AI绘图的效率与质量并非完全依赖工具,而是取决于对提示词逻辑的掌握、对风格边界的理解,以及对人机协同的合理运用——这三者是快速出好图的核心底层能力。在实践中,许多用户困惑于“为什么同样的工具,输出效果差异巨大”&#xf…

作者头像 李华
网站建设 2026/7/8 10:09:36

2026免费降AI工具测评:哪款能把知网AI率降到15%以下

2026免费降AI工具测评:哪款能把知网AI率降到15%以下 花了一周时间,我把能找到的免费降AI工具都试了一遍。 先说结论:免费工具能用,但效果有限。如果你的AI率在50%以下,免费工具可能够用;如果在50%以上&…

作者头像 李华
网站建设 2026/6/30 22:28:48

基于Thinkphp和Laravel的小区物业管理系统设计与实现

目录 小区物业管理系统设计与实现摘要技术架构功能模块系统特点实现效果 项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理 小区物业管理系统设计与实现摘要 该系统基于ThinkPHP和Laravel框架开发,旨在提升小区物业管理效率和服务质量。…

作者头像 李华
网站建设 2026/7/2 6:55:40

为什么你的测试总在“网络延迟”上失败?

网络延迟测试是软件性能测试的关键环节,尤其在云计算、物联网和实时应用场景中,它直接影响用户体验和系统可靠性。然而,许多测试团队反复遭遇延迟测试失败,导致误报、数据失真和项目延期。 一、硬件因素:设备老化与配…

作者头像 李华
网站建设 2026/7/2 6:50:59

计算机毕业设计springboot物品捎带平台的设计与实现 基于Spring Boot的物品代送服务平台开发与实现 Spring Boot框架下的物品托运系统设计与构建

计算机毕业设计springboot物品捎带平台的设计与实现_xrt3a (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 随着互联网的飞速发展,传统的物品捎带方式逐渐无法满足人…

作者头像 李华
网站建设 2026/7/6 14:09:21

服务器运维操作命令速查手册

服务器运维操作命令手册适用对象:Linux 服务器运维工程师 / 网络工程师 / IT 运维人员 适用环境:CentOS / Rocky / AlmaLinux / Ubuntu / Debian(命令通用,个别差异已说明)一、系统基础信息查看1. 系统与内核uname -a …

作者头像 李华