当前位置: 首页 > news >正文

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6+。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的 FastAPI 应用的各个步骤。

一、前置准备

在开始之前,请确保你已经安装了 Python 3.7+(推荐 3.7+ 以获得更好的类型提示支持)和一个代码编辑器(如 VS Code 或 PyCharm)。强烈建议使用虚拟环境来隔离项目依赖。

创建虚拟环境

python -m venv .venv

激活虚拟环境

  • macOS/Linux:
  source .venv/bin/activate
  • Windows:
  .venv\Scripts\activate

激活虚拟环境后,终端提示符前会显示虚拟环境的名称(通常是 .venv)。

二、安装 FastAPI 和 ASGI 服务器

FastAPI 本身是一个框架,需要一个 ASGI 服务器来运行它。常用的 ASGI 服务器有 Uvicorn 和 Hypercorn。我们通常选择 Uvicorn,因为它高性能且易于使用。

pip install fastapi uvicorn[standard]
  • fastapi:安装 FastAPI 框架本身。
  • uvicorn[standard]:安装 Uvicorn ASGI 服务器,[standard] 选项会安装一些常用的可选依赖。

三、创建第一个 FastAPI 应用

创建一个名为 main.py 的文件,并输入以下代码:

from fastapi import FastAPIapp = FastAPI()@app.get("/")
async def read_root():return {"Hello": "World"}

运行应用

打开终端,进入到 main.py 文件所在的目录,并确保虚拟环境已激活。然后运行 Uvicorn:

uvicorn main:app --reload
  • main:指代 main.py 文件(模块)。
  • app:指代在 main.py 文件中创建的 FastAPI() 实例对象。
  • --reload:开启热重载模式。当你修改代码并保存后,Uvicorn 会自动重启服务器,方便开发调试。

运行成功后,你将看到类似以下的输出:

INFO:     Will watch for changes in these directories: ['/path/to/your/project']
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [PID]
INFO:     Started server running on http://127.0.0.1:8000

现在,打开浏览器访问 http://127.0.0.1:8000,你会看到 JSON 响应:{"Hello": "World"}

四、自动生成的 API 文档

FastAPI 最酷的特性之一是自动生成 API 文档。在服务器运行状态下,访问以下地址:

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

你会看到交互式的 API 文档界面,可以直接在里面测试你的 API 端点。

五、处理路径参数和查询参数

路径参数

@app.get("/items/{item_id}")
async def read_item(item_id: int):return {"item_id": item_id}

访问 http://127.0.0.1:8000/items/5,你会看到:{"item_id": 5}

查询参数

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

访问 http://127.0.0.1:8000/items/?skip=0&limit=10,你会看到:{"skip": 0, "limit": 10}

六、定义请求体

使用 Pydantic 定义请求体模型:

from pydantic import BaseModelclass Item(BaseModel):name: strdescription: str = Noneprice: floattax: float = None

定义一个 POST 请求,接收一个 Item 对象作为请求体:

@app.post("/items/")
async def create_item(item: Item):return item

FastAPI 会自动将请求体(通常是 JSON)解析并验证。如果数据格式或类型不匹配 Item 模型,FastAPI 会返回 422 Unprocessable Entity 错误。

七、依赖注入

使用 Depends 添加依赖注入:

from fastapi import Dependsdef get_common_parameters(q: str = None, skip: int = 0, limit: int = 10):return {"q": q, "skip": skip, "limit": limit}@app.get("/items_with_dependency/")
async def read_items_with_dependency(commons: dict = Depends(get_common_parameters)):return commons

Depends 告诉 FastAPI,路径操作函数需要一个依赖,这个依赖可以通过调用 get_common_parameters 函数来获取。

八、下一步学习建议

  1. 实践:尝试基于本教程的例子,自己写一些带有不同路径、查询参数、请求体和响应模型的 API。
  2. 官方文档:FastAPI 的官方文档(https://fastapi.tiangolo.com/zh/,有中文版)非常详细和全面,是深入学习的最佳资源。
  3. 构建更复杂的应用:学习如何使用 APIRouter 组织代码,如何集成数据库(如 SQLAlchemy 或 ORM),如何实现用户认证等。

希望本教程能帮助你快速上手 FastAPI,并感受到它的强大魅力!

http://www.xdnf.cn/news/972919.html

相关文章:

  • V837s-调整内核dmesg内容ring buffer大小
  • k8s从入门到放弃之Ingress七层负载
  • 字符串序列判定
  • pip install 安装traj_dist库失败
  • PCB设计教程【大师篇】——STM32开发板原理图设计(单片机最小系统)
  • 树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
  • 智能在线客服平台:数字化时代企业连接用户的 AI 中枢
  • 【PCL无法读取点云PLY或者PCD格式】
  • esp32idf 关于SPIRAM的使用
  • 第四章 W55MH32初体验
  • Web后端基础:Maven基础
  • PostgreSQL--安装方法
  • 力扣Hot100每日一题[1,3]
  • 【CF】Day80——Codeforces Round 872 (Div. 2) C⭐D (思维 + 模拟 | 树 + 思维 + 组合数学 + 分数取模)
  • 小天互连IM:信创体系下的安全、高效即时通讯新选择
  • 【小记】2024-2025生物计算类热点问题
  • 方案解读:智慧银行反欺诈大数据管控平台建设方案【附全文阅读】
  • 20、React常用API和Hook索引
  • Memory Repair (三)
  • Java单列模式总结及实现
  • asio之读写
  • 路径规划算法概论:从理论到实践
  • switch选择语句
  • ABB UNITROL 6000 X-power 3BH022294R0103 GFD233A103
  • Python 3.6/3.8版本切换脚本
  • 调用支付宝接口响应40004 SYSTEM_ERROR问题排查
  • Python模块全解析:从入门到精通
  • MySQL学习之---索引
  • Lighttpd 配置选项介绍
  • 谷歌趋势自动报告系统(Pipedream + Scrapeless + Discord)