Python学习笔记09-FastAPI Web开发
·
FastAPI 简介
FastAPI 是一个现代、快速(高性能)的 Python Web 框架,基于标准 Python 类型提示构建。它专为构建 API 设计,支持异步编程,并自动生成交互式 API 文档(Swagger/OpenAPI)。
安装 FastAPI
运行以下命令安装 FastAPI 及其依赖:
pip install fastapi uvicorn
uvicorn是 ASGI 服务器,用于运行 FastAPI 应用。
创建第一个 FastAPI 应用
创建一个文件 main.py,编写以下代码:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"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
--reload表示开发模式下自动重载代码变更。- 访问
http://127.0.0.1:8000查看返回的 JSON 响应。
交互式 API 文档
FastAPI 自动生成文档:
- Swagger UI:
http://127.0.0.1:8000/docs - ReDoc:
http://127.0.0.1:8000/redoc
路径参数与查询参数
路径参数通过 URL 路径传递,查询参数通过 ?key=value 形式传递:
@app.get("/users/{user_id}")
def read_user(user_id: int, limit: int = 10):
return {"user_id": user_id, "limit": limit}
user_id是路径参数,limit是查询参数(默认值 10)。
请求体与 Pydantic 模型
使用 Pydantic 模型定义请求体的数据结构:
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str = None
price: float
@app.post("/items/")
def create_item(item: Item):
return {"item": item}
- 发送 POST 请求时,请求体需符合
Item模型的格式。
异步支持
FastAPI 支持异步函数:
@app.get("/async-example")
async def async_read():
await some_async_function()
return {"message": "Async works!"}
依赖注入
通过依赖注入管理共享逻辑(如数据库连接):
from fastapi import Depends
def common_parameters(q: str = None, skip: int = 0):
return {"q": q, "skip": skip}
@app.get("/dependency/")
def read_commons(commons: dict = Depends(common_parameters)):
return commons
错误处理
自定义 HTTP 异常:
from fastapi import HTTPException
@app.get("/error-example")
def raise_error():
raise HTTPException(status_code=404, detail="Item not found")
中间件
添加中间件处理请求/响应:
from fastapi.middleware.cors import CORSMiddleware
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_methods=["*"],
)
测试 FastAPI
使用 TestClient 编写单元测试:
from fastapi.testclient import TestClient
client = TestClient(app)
def test_read_root():
response = client.get("/")
assert response.status_code == 200
assert response.json() == {"Hello": "World"}
部署 FastAPI
生产环境建议使用:
- Uvicorn + Gunicorn:多进程管理。
- Docker:容器化部署。
- 云服务:如 AWS、Google Cloud 或 Azure。
示例 Dockerfile:
FROM python:3.9
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]
性能优化
- 使用异步数据库驱动(如
asyncpg)。 - 启用响应压缩:
from fastapi.middleware.gzip import GZipMiddleware app.add_middleware(GZipMiddleware)
通过以上步骤,可以快速掌握 FastAPI 的核心功能并构建高性能 Web 应用。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐




所有评论(0)