引言
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,由 Python 3.6+ 支持。它具有异步架构,这意味着它可以同时处理多个请求,而不需要为每个请求创建新的线程。本文将带你从入门到实战,了解 FastAPI 的基本概念,并通过简单易懂的实例教程,让你快速掌握如何使用 FastAPI 创建异步 API。
FastAPI 简介
1.1 FastAPI 的特点
- 异步架构:FastAPI 使用 Starlette 和 Pydantic,支持异步请求处理,提高并发性能。
- 类型安全:FastAPI 使用 Pydantic 进行数据验证和序列化,确保数据类型正确。
- 自动文档:FastAPI 自动生成交互式 API 文档,方便开发者调试和测试。
- 易于扩展:FastAPI 提供丰富的中间件和依赖注入,方便扩展功能。
1.2 安装 FastAPI
首先,确保你的 Python 环境已安装。然后,使用 pip 安装 FastAPI:
pip install fastapi uvicorn
快速开始
2.1 创建项目结构
创建一个名为 my_project 的目录,并在其中创建以下文件:
my_project/
│
├── main.py
└── requirements.txt
在 requirements.txt 文件中,添加以下内容:
fastapi
uvicorn
2.2 编写第一个 FastAPI 应用
在 main.py 文件中,编写以下代码:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Hello World"}
2.3 运行 FastAPI 应用
使用以下命令运行 FastAPI 应用:
uvicorn main:app --reload
此时,访问 http://127.0.0.1:8000/,你应该能看到以下响应:
{
"message": "Hello World"
}
实例教程
3.1 创建一个简单的 API
在这个例子中,我们将创建一个 API,用于获取用户信息。
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI()
class User(BaseModel):
id: int
name: str
age: int
@app.get("/users/{user_id}")
async def get_user(user_id: int):
# 这里只是一个示例,实际应用中需要从数据库或其他数据源获取数据
user = {
"id": user_id,
"name": "张三",
"age": 30
}
return user
3.2 使用 Pydantic 进行数据验证
在上面的例子中,我们使用了 Pydantic 的 BaseModel 类来定义用户模型,并确保传入的数据符合预期格式。
3.3 使用中间件
中间件是 FastAPI 中的一个重要特性,它可以让你在请求处理过程中添加自定义逻辑。
from fastapi import FastAPI, Request
app = FastAPI()
@app.middleware("http")
async def add_process_time_header(request: Request, call_next):
response = await call_next(request)
response.headers["X-Process-Time"] = str(response.process_time)
return response
在这个例子中,我们添加了一个中间件,用于记录每个请求的处理时间。
总结
本文介绍了 FastAPI 的基本概念和快速开始教程,并通过实例教程展示了如何创建简单的 API。希望这篇文章能帮助你快速掌握 FastAPI,并在实际项目中应用它。
