news 2026/2/4 12:32:32

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/2/2 12:53:14

【游戏推荐】未见之界 (The Axis Unseen)免安装中文版

类型: 冒险, 动作, 恐怖 链接:https://pan.quark.cn/s/2e476a514907 游戏简介 《The Axis Unseen》是一款重金属恐怖游戏,由《上古卷轴 5:天际》和《辐射》的开发人员制作。 在神秘的开放世界中猎杀古代民间传说中的噩梦怪物&am…

作者头像 李华
网站建设 2026/2/4 2:32:57

零基础Git版本 安装教程

Git 安装教程(保姆级指南) Git 是程序员的必备工具。对于 Windows 用户来说,安装过程中的几十个英文选项往往让人头大。本教程将手把手带您走完安装流程,确保您的环境配置最优化、最符合现代开发标准。 一、准备工作 1.1 下载地…

作者头像 李华
网站建设 2026/2/4 3:13:07

10个技巧:提升生成式AI的鲁棒性测试

鲁棒性测试在生成式AI时代的核心价值 随着生成式AI在代码生成、测试用例设计、需求分析等领域的深度应用,其输出稳定性成为影响软件质量的关键因素。鲁棒性测试通过模拟数据扰动、异常输入和极端场景,评估模型抗干扰能力,是确保AI可靠交付的…

作者头像 李华
网站建设 2026/2/3 11:27:08

基于Thinkphp和Laravel语言的考试信息报名系统_5n9zn

目录 ThinkPHP与Laravel考试报名系统开发对比框架特性数据库设计用户认证与权限表单与验证性能优化部署与扩展示例代码片段适用场景建议 项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理 ThinkPHP与Laravel考试报名系统开发对比 框架特性 ThinkP…

作者头像 李华
网站建设 2026/2/3 12:52:49

基于Thinkphp和Laravel的旅游出行指南_655ms

目录 技术选型对比核心功能模块数据库设计性能优化方案安全防护措施第三方服务集成部署运维建议 项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理 以下是基于ThinkPHP和Laravel框架开发旅游出行指南系统的关键信息整理: 技术选型对比 …

作者头像 李华
网站建设 2026/2/3 5:18:29

USB协议原理梳理

USB协议核心知识 一、USB协议架构 1.1 协议分层 USB协议采用分层架构设计,从下至上分为物理层、链路层、协议层、应用层,各层独立封装,降低开发复杂度。 1.1.1 物理层 定义USB接口的硬件特性,包括引脚定义、电压等级、传输速…

作者头像 李华