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

相关推荐
SNAKEpc121389 分钟前
深入理解PyQtGraph核心组件交互
python·qt·pyqt
Henry Zhu12314 分钟前
Qt Model/View架构详解(四):高级特性
开发语言·qt·架构
txinyu的博客28 分钟前
std::function
服务器·开发语言·c++
人工智能AI技术43 分钟前
【Agent从入门到实践】25 主流向量数据库速览:Pinecone、Chroma、Milvus,本地/云端选型建议
人工智能·python
多多*1 小时前
图解Redis的分布式锁的历程 从单机到集群
java·开发语言·javascript·vue.js·spring·tomcat·maven
电商API&Tina1 小时前
Python请求淘宝商品评论API接口全指南||taobao评论API
java·开发语言·数据库·python·json·php
学嵌入式的小杨同学1 小时前
【嵌入式 C 语言实战】交互式栈管理系统:从功能实现到用户交互全解析
c语言·开发语言·arm开发·数据结构·c++·算法·链表
地球没有花1 小时前
调整warmup的batch优化tensorflow serving P99耗时毛刺
人工智能·python·tensorflow
小杍随笔1 小时前
【Rust Cargo 目录迁移到 D 盘:不改变安装路径和环境变量的终极方案】
开发语言·后端·rust
Henry Zhu1232 小时前
Qt Model/View架构详解(五):综合实战项目
开发语言·qt·架构