news 2026/9/18 20:49: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/9/12 4:38:37

年会策划必看:4个能落地的高人气玩法,省预算又出效果

当前企业年会已从传统聚餐转向创意化、效率化、互动化的综合体验,对视觉设计、流程管理、现场互动等工具的需求激增。但传统工具存在设计门槛高需专业软件、场景适配差通用工具难满足年会特定需求、协作效率低跨部门沟通不畅等痛点。国内一批聚焦年会细分场景的实用…

作者头像 李华
网站建设 2026/9/11 8:59:43

AIGC设计:内容生成与场景落地的核心方法与实践指南

AIGC设计的本质,是通过人工智能技术将创意需求转化为可落地的视觉内容。其核心价值并非简单替代人工,而是以“技术赋能场景适配合规保障”的组合逻辑,精准解决用户在效率、创意、版权上的三重核心痛点——效率痛点对应人工设计周期长、批量处…

作者头像 李华
网站建设 2026/9/17 20:29:10

铁轨表面缺陷检测这事儿听起来挺硬核,但用MATLAB玩起来其实有点意思。咱们直接撸代码说人话,先搞张铁轨灰度图读进来

MATLAB 铁轨表面缺陷检测系统 DFT幅度 相位反变化 高斯滤波 二值化 根据欧几里得距离标记前后背景 对前景进行膨胀和腐蚀操作 可以选择忽略图像边缘 选择是否隔离图像中的目标raw_img imread(rail_surface.jpg); img_gray rgb2gray(raw_img); imshow(img_gray), title(原图看…

作者头像 李华
网站建设 2026/9/14 23:42:34

2026毕设ssm+vue旅游服务软件论文+程序

本系统(程序源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。 系统程序文件列表 开题报告内容 一、选题背景 关于旅游信息化管理问题的研究,现有研究主要以传统单体应用架构或简单的信息展示平台为主,专门…

作者头像 李华
网站建设 2026/9/17 11:01:52

2026毕设ssm+vue旅游出行系统论文+程序

本系统(程序源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、选题背景关于旅游信息化管理问题的研究,现有研究主要以大型OTA平台(如携程、去哪儿等)的智慧化建设…

作者头像 李华
网站建设 2026/9/5 21:41:03

SCI论文降AI实测:知网AIGC检测AI率<15%的解决方案

SCI论文降AI实测&#xff1a;知网AIGC检测AI率<15%的解决方案 投SCI的稿子被退回来了&#xff0c;编辑说AI检测没过。Turnitin显示AI率83%。 先说结论&#xff1a;用AIGCleaner处理英文部分&#xff0c;从83%降到了0%。中文部分用比话降AI&#xff08;www.bihuapass.com&am…

作者头像 李华