Python FastAPI 实战应用指南

文章目录

    • [1. 前言](#1. 前言)
    • [2. FastAPI 的优势](#2. FastAPI 的优势)
    • [3. FastAPI 快速入门](#3. FastAPI 快速入门)
      • [3.1 安装](#3.1 安装)
      • [3.2 最简单的 API 案例](#3.2 最简单的 API 案例)
    • [4. 基础功能应用](#4. 基础功能应用)
      • [4.1 模型验证和参数校验](#4.1 模型验证和参数校验)
      • [4.2 实现高级计划:用于实时功能和快速发布](#4.2 实现高级计划:用于实时功能和快速发布)
    • [5. 高级应用](#5. 高级应用)
      • [5.1 实现 OAuth2 认证](#5.1 实现 OAuth2 认证)
      • [5.2 提供 WebSocket 支持](#5.2 提供 WebSocket 支持)
    • [6. 总结](#6. 总结)

1. 前言

FastAPI 是一个进一步提升 Python Web 开发效率和性能的框架,具有高性能,易于使用,并提供一次性文档。本文将通过一些实战案例来认识 FastAPI 的基本功能和高级应用。

2. FastAPI 的优势

  1. 带有完善的自动文档生成:根据模型定义,自动生成丰富的 API 文档,兼存 Swagger UI 和 ReDoc。
  2. 高效性:基于 Starlette 和 Pydantic ,提供优秀性能和数据校验。
  3. 完善的支持性:支持 WebSocket,GraphQL,OAuth2。
  4. 最新高级功能:完全保持 Python 代码的高级引擎和控制。

3. FastAPI 快速入门

3.1 安装

确保已安装 Python 3.7+:

bash 复制代码
pip install fastapi uvicorn

注:Uvicorn 是一个高性能的 ASGI 引擎,用于运行 FastAPI 应用。

3.2 最简单的 API 案例

创建文件 main.py

python 复制代码
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "欢迎使用 FastAPI!"}

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

启动服务器:

bash 复制代码
uvicorn main:app --reload

访问 http://127.0.0.1:8000 和 Swagger UI:http://127.0.0.1:8000/docs


4. 基础功能应用

4.1 模型验证和参数校验

使用 Pydantic 模型来校验数据:

python 复制代码
from pydantic import BaseModel

class Item(BaseModel):
    name: str
    description: str = None
    price: float
    tax: float = None

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

提供备选参数,进行文档化。

4.2 实现高级计划:用于实时功能和快速发布

这里例如使用 BackgroundTasks:

python 复制代码
from fastapi import BackgroundTasks

def write_log(message: str):
    with open("log.txt", "a") as log:
        log.write(message + "\n")

@app.post("/log/")
def log_message(message: str, background_tasks: BackgroundTasks):
    background_tasks.add_task(write_log, message)
    return {"message": "Log recorded!"}

5. 高级应用

5.1 实现 OAuth2 认证

FastAPI 支持 OAuth2 和 JWT:

python 复制代码
from fastapi.security import OAuth2PasswordBearer

oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")

@app.get("/users/me")
def read_users_me(token: str = Depends(oauth2_scheme)):
    return {"token": token}

5.2 提供 WebSocket 支持

python 复制代码
from fastapi import WebSocket

@app.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket):
    await websocket.accept()
    while True:
        data = await websocket.receive_text()
        await websocket.send_text(f"Message text was: {data}")

6. 总结

FastAPI 是完善的选择,适合构建低带宽、高性能的 API。通过本文中的案例,希望你能够快速上手并创建自己的实现。

相关推荐
码界筑梦坊8 分钟前
基于Pyhon的京东笔记本电脑数据可视化分析系统
python·信息可视化·数据分析·毕业设计·电脑·销量预测
m0_6161884913 分钟前
PDF预览-搜索并高亮文本
开发语言·javascript·ecmascript
IT瘾君14 分钟前
Java基础:Logback日志框架
java·开发语言·logback
stevenzqzq17 分钟前
kotlin中主构造函数是什么
开发语言·python·kotlin
Tttian62227 分钟前
Python办公自动化(2)对word&pdf的操作
开发语言·python
HNU混子30 分钟前
手搓多模态-03 顶层和嵌入层的搭建
python·机器学习·计算机视觉
美美打不死37 分钟前
webpack js 逆向 --- 个人记录
开发语言·javascript·webpack
等雨季38 分钟前
scala编程语言
开发语言·scala
databook1 小时前
『Plotly实战指南』--箱线图绘制与应用
python·数据分析·数据可视化
不断前进的皮卡丘1 小时前
06-公寓租赁项目-后台管理-公寓管理篇
java·开发语言·数据库·spring boot