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。通过本文中的案例,希望你能够快速上手并创建自己的实现。

相关推荐
sycmancia1 分钟前
Qt——多线程与界面组件的通信
开发语言·qt·算法
你驴我3 分钟前
WhatsApp 多账号消息路由中的去重与顺序保证实践
开发语言·php
aqi0010 分钟前
15天学会AI应用开发(十五)使用LangChain封装AI执行链
人工智能·python·大模型·ai编程·ai应用
wordpress资料库36 分钟前
Next.js更适合移动开发 不适合web开发
开发语言·前端·javascript·next.js
wujf9037 分钟前
Go 内存泄漏排查完整教程 (pprof)
开发语言·golang·xcode
kisbad38 分钟前
Day 012|Embedding 和向量数据库:知识库检索到底在检什么
数据库·python·embedding·agent
va学弟1 小时前
LeetCode 热题 100 题解(1):哈希
python·算法·leetcode·哈希算法
言乐61 小时前
Python实现基本搜索引擎
java·linux·开发语言·python·搜索引擎