news 2026/4/30 12:28:15

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/4/28 19:18:22

个人开发者软著申请指南:不懂代码文档也能30分钟出材料

我是做独立开发的,去年写了个小工具想申请软著保护一下。 结果一打开版权局的指南,直接懵了:说明书要怎么写?源代码文档是什么格式?60页代码从哪来? 折腾了一周,材料还是写不出来。后来朋友推…

作者头像 李华
网站建设 2026/4/23 17:31:36

Reddit营销:如何在Reddit写出“像用户一样”的营销贴?、

Reddit 一直是高价值流量池,但同时也是最排斥“营销味”的社区之一。 很多营销人员在 Reddit 遇到同一个问题: 内容明明有用,却被删除; 帖子刚发就沉、被删; 账号甚至直接被限制或封禁。 问题往往不在于产品本身&a…

作者头像 李华
网站建设 2026/4/30 2:29:34

2026毕设ssm+vue旅游分享平台论文+程序

本系统(程序源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容选题背景关于旅游资源数字化管理问题的研究,现有研究主要以传统旅行社管理系统或单一类型景区管理为主,专门针对多维…

作者头像 李华
网站建设 2026/4/23 8:13:44

ArcGIS Python零基础脚本开发教程---1.2 os库

文章目录 前言一、文件和目录操作1.1 基础路径操作1.2 目录遍历和文件列表1.3 目录创建和删除1.4 文件操作 二、路径信息检查 前言 Python的 os 模块提供了丰富的操作系统交互功能。 一、文件和目录操作 1.1 基础路径操作 # -*- coding: UTF-8 -*- import os Input r"…

作者头像 李华
网站建设 2026/4/23 20:57:16

基于Thinkphp和Laravel的社区访客来访管理系统的设计与实现

目录 设计目标技术架构核心功能创新点实现效果 项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理 设计目标 开发基于ThinkPHP和Laravel框架的社区访客管理系统,实现访客信息登记、身份核验、访问记录追踪及数据分析功能,提升…

作者头像 李华
网站建设 2026/4/23 9:46:31

基于Thinkphp和Laravel的网上购物商城网购平台管理系统_0q1i3

目录 ThinkPHP与Laravel网上购物商城系统概述核心功能模块技术架构特点部署与扩展性适用场景 项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理 ThinkPHP与Laravel网上购物商城系统概述 该网购平台管理系统基于ThinkPHP或Laravel框架开发&#xff…

作者头像 李华