news 2026/6/16 0:51:20

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/6/13 15:35:05

ArcGIS Python零基础脚本开发教程---1.1 Describe 函数

文章目录前言一、 基础属性示例二、要素类相关属性三、字段信息四、 栅格数据属性五、工作空间和数据集六、注意事项前言 arcpy.Describe函数用于获取地理数据(要素类、栅格、图层等)的属性信息,返回一个包含数据属性(如数据类型…

作者头像 李华
网站建设 2026/6/15 11:01:55

Linux环境编程第四天笔记

Linux环境编程第四天笔记 进程的语言 管道 管道是一种特殊的文件 管道是Linux中最基础的进程间通信机制,分为无名(匿名)管道和无名管道 管道默认是半双工通信方式(数据只能在一个方向上流动) 管道中的数据读取后会…

作者头像 李华
网站建设 2026/6/15 13:21:38

基于Thinkphp和Laravel的智慧社区物业缴费管理系统的设计与实现_2p760_

目录 智慧社区物业缴费管理系统的设计与实现系统架构设计核心功能模块技术实现特点应用效果评估 项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理 智慧社区物业缴费管理系统的设计与实现 该系统基于ThinkPHP和Laravel框架开发,旨在解决…

作者头像 李华
网站建设 2026/6/10 14:56:04

我把测试报告生成为“可分享链接”,一键发给客户

测试报告分享的痛点与变革机遇 在软件开发生命周期中,测试报告是沟通团队与客户的桥梁,它汇总了缺陷、通过率、风险等关键数据,直接影响项目决策和客户信任。然而,传统分享方式——如邮件附件、手动上传云盘——常导致版本混乱、…

作者头像 李华
网站建设 2026/6/10 14:57:02

基于Thinkphp和Laravel的健身房管理系统_bgnk6

目录 基于ThinkPHP和Laravel的健身房管理系统主要功能模块技术实现系统优势 项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理 基于ThinkPHP和Laravel的健身房管理系统 该系统是一个结合ThinkPHP和Laravel框架开发的健身房管理平台,旨在…

作者头像 李华