跳转到内容

Python Fastap

来自代码酷

Python FastAPI[编辑 | 编辑源代码]

FastAPI 是一个现代、快速(高性能)的 Python Web 框架,用于构建 API。它基于标准 Python 类型提示,使用 StarlettePydantic 构建,提供了极高的性能,接近 Node.jsGo 的速度。FastAPI 特别适合开发 RESTful API、微服务以及需要高性能的 Web 应用程序。

核心特性[编辑 | 编辑源代码]

FastAPI 的主要特点包括:

  • 高性能:基于 ASGI(异步服务器网关接口),支持异步请求处理。
  • 自动文档生成:内置 Swagger UIReDoc,自动生成交互式 API 文档。
  • 数据验证:使用 Pydantic 进行请求和响应数据的自动验证。
  • 依赖注入系统:简化代码组织,提高可维护性。
  • 类型安全:利用 Python 类型提示,减少运行时错误。

安装[编辑 | 编辑源代码]

FastAPI 可以通过 pip 安装:

pip install fastapi

此外,需要一个 ASGI 服务器(如 Uvicorn)来运行 FastAPI 应用:

pip install uvicorn

基本示例[编辑 | 编辑源代码]

以下是一个简单的 FastAPI 应用示例:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello, World!"}

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

运行应用:

uvicorn main:app --reload

访问 `http://127.0.0.1:8000/` 将返回:

{"message": "Hello, World!"}

访问 `http://127.0.0.1:8000/items/5?q=test` 将返回:

{"item_id": 5, "q": "test"}

请求和响应模型[编辑 | 编辑源代码]

FastAPI 使用 Pydantic 模型定义数据结构:

from pydantic import BaseModel
from fastapi import FastAPI

app = FastAPI()

class Item(BaseModel):
    name: str
    price: float
    is_offer: bool = None

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

发送 POST 请求:

{
    "name": "Laptop",
    "price": 999.99,
    "is_offer": true
}

响应:

{
    "name": "Laptop",
    "price": 999.99,
    "is_offer": true
}

异步支持[编辑 | 编辑源代码]

FastAPI 支持异步请求处理:

from fastapi import FastAPI
import httpx

app = FastAPI()

@app.get("/async-example/")
async def fetch_data():
    async with httpx.AsyncClient() as client:
        response = await client.get("https://api.example.com/data")
        return response.json()

依赖注入[编辑 | 编辑源代码]

FastAPI 的依赖注入系统简化了代码复用:

from fastapi import Depends, FastAPI

app = FastAPI()

def common_parameters(q: str = None, skip: int = 0, limit: int = 100):
    return {"q": q, "skip": skip, "limit": limit}

@app.get("/items/")
def read_items(commons: dict = Depends(common_parameters)):
    return commons

实际应用案例[编辑 | 编辑源代码]

FastAPI 适用于多种场景,包括:

  • 微服务架构:构建轻量级、高性能的微服务。
  • 数据 API:为前端应用或移动应用提供数据接口。
  • 机器学习 API:部署机器学习模型作为 RESTful 服务。

机器学习 API 示例[编辑 | 编辑源代码]

from fastapi import FastAPI
from pydantic import BaseModel
import joblib

app = FastAPI()
model = joblib.load("model.pkl")

class PredictionInput(BaseModel):
    feature1: float
    feature2: float

@app.post("/predict/")
def predict(input: PredictionInput):
    prediction = model.predict([[input.feature1, input.feature2]])
    return {"prediction": prediction[0]}

性能比较[编辑 | 编辑源代码]

FastAPI 的性能接近原生 GoNode.js

barChart title Web框架性能比较(请求/秒) x-axis 框架 y-axis 性能 bar FastAPI : 50000 bar Flask : 10000 bar Django : 5000 bar Node.js : 55000 bar Go : 60000

数学支持[编辑 | 编辑源代码]

FastAPI 可以处理数学运算请求,例如计算圆的面积:

from fastapi import FastAPI
from pydantic import BaseModel
import math

app = FastAPI()

class Circle(BaseModel):
    radius: float

@app.post("/area/")
def calculate_area(circle: Circle):
    area = math.pi * circle.radius ** 2
    return {"area": area}

数学公式表示为: A=πr2

进阶主题[编辑 | 编辑源代码]

  • 中间件:自定义请求/响应处理流程。
  • WebSockets:实现实时双向通信。
  • OAuth2 认证:集成安全认证系统。
  • 数据库集成:与 SQLAlchemyTortoise-ORM 配合使用。

总结[编辑 | 编辑源代码]

FastAPI 是一个功能强大、易于使用的现代 Python Web 框架,特别适合构建高性能 API。它的自动文档生成、数据验证和异步支持使其成为 Python Web 开发的优秀选择。无论是初学者还是经验丰富的开发者,都能快速上手并构建高效的 Web 应用。