引言

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,由 Python 3.6+ 支持。它基于标准 Python 类型提示,旨在快速开发。本文将为您提供一个快速入门和实践指南,帮助您了解如何使用 FastAPI 创建高效的 RESTful API。

快速入门

安装 FastAPI

首先,您需要安装 FastAPI 和 Uvicorn,Uvicorn 是一个 ASGI 服务器,用于运行 FastAPI 应用。

pip install fastapi uvicorn 

创建第一个 FastAPI 应用

创建一个名为 main.py 的文件,并添加以下代码:

from fastapi import FastAPI app = FastAPI() @app.get("/") async def read_root(): return {"message": "Hello World"} 

使用以下命令运行应用:

uvicorn main:app --reload 

在浏览器中访问 http://127.0.0.1:8000/,您将看到 “Hello World” 消息。

路由和视图函数

FastAPI 使用 Python 函数来定义路由和视图。您可以使用 @app.get()@app.post()@app.put()@app.delete() 等装饰器来定义不同类型的 HTTP 请求。

@app.get("/items/") async def read_items(item_id: int = Query(..., ge=1)): return {"item_id": item_id} 

在上面的示例中,我们定义了一个 GET 路由 /items/,它接受一个查询参数 item_id

数据验证

FastAPI 使用 Pydantic 来验证和序列化数据。您可以为请求参数、请求体和响应定义 Pydantic 模型。

from pydantic import BaseModel class Item(BaseModel): id: int name: str 

现在,您可以使用 Item 模型来验证和序列化请求体:

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

异步支持

FastAPI 支持异步函数,这意味着您可以轻松地处理 I/O 密集型操作,如数据库查询或网络请求。

@app.get("/items/{item_id}") async def read_item(item_id: int): # 异步数据库查询或其他 I/O 操作 return {"item_id": item_id} 

中间件和依赖注入

FastAPI 支持中间件和依赖注入,这可以帮助您处理跨多个路由的通用逻辑。

from fastapi import Depends, HTTPException, status @app.middleware("http") async def log_requests(request: Request, call_next): print(f"Request: {request.method} {request.url}") response = await call_next(request) print(f"Response: {response.status_code}") return response @app.get("/items/{item_id}") async def read_item(item_id: int, user_id: int = Depends(get_current_user)): # 使用依赖注入获取当前用户 return {"item_id": item_id, "user_id": user_id} 

实践指南

性能优化

  1. 使用异步数据库驱动程序,如 databases
  2. 使用缓存,如 RedisMemcached
  3. 优化依赖注入系统,避免不必要的重复实例化。

安全性

  1. 使用 HTTPS 保护数据传输。
  2. 验证和清理用户输入,防止注入攻击。
  3. 使用 OAuth 2.0、JWT 或其他身份验证机制。

测试

  1. 使用 pytesthttpx 来编写和运行测试。
  2. 使用 PostmanInsomnia 来手动测试 API。

部署

  1. 使用 GunicornUvicorn 在生产环境中运行 FastAPI 应用。
  2. 使用容器化技术,如 Docker,简化部署过程。

总结

FastAPI 是一个功能强大且易于使用的 Web 框架,适用于构建高效的 RESTful API。通过本文的快速入门和实践指南,您应该能够开始使用 FastAPI 创建自己的 API。祝您好运!