FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,由 Python 3.6+ 支持。它具有异步功能,可以处理高并发请求。FastAPI 遵循 REST 模式,与 Pydantic 集成,支持自动验证和验证数据。在本教程中,我们将从零开始,学习如何使用 FastAPI 框架创建高效的 API。
FastAPI 简介
FastAPI 是由 Starlette 和 Pydantic 驱动的,它旨在为开发者提供一种快速、简单、高效的 API 开发体验。以下是 FastAPI 的一些主要特点:
- 异步:FastAPI 是异步的,这意味着它可以处理大量的并发请求。
- 易于使用:FastAPI 的 API 生成方式简单,易于学习和使用。
- 自动验证:FastAPI 与 Pydantic 集成,可以自动验证和验证数据。
- 可扩展性:FastAPI 支持中间件和依赖注入,使其可扩展性强。
- 文档:FastAPI 自动生成交互式 API 文档,方便开发者查看和使用。
安装 FastAPI
在开始使用 FastAPI 之前,我们需要安装 FastAPI 和 Uvicorn。以下是安装命令:
pip install fastapi uvicorn
创建第一个 FastAPI 应用
以下是一个简单的 FastAPI 应用示例:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello, world!"}
在这个示例中,我们创建了一个名为 app 的 FastAPI 实例,并定义了一个路由 /,它返回一个 JSON 响应。
路由和操作
FastAPI 使用 Pydantic 模式来定义路由和操作。以下是一个包含多个路由和操作的示例:
from fastapi import FastAPI, HTTPException
app = FastAPI()
items = [{"id": 1, "name": "Item 1"}, {"id": 2, "name": "Item 2"}]
@app.get("/")
async def root():
return {"message": "Hello, world!"}
@app.get("/items/")
async def read_items():
return items
@app.get("/items/{item_id}")
async def read_item(item_id: int):
item = next((x for x in items if x["id"] == item_id), None)
if item is None:
raise HTTPException(status_code=404, detail="Item not found")
return item
在这个示例中,我们定义了三个路由:/、/items/ 和 /items/{item_id}。其中,/items/{item_id} 路由接受一个路径参数 item_id,用于获取指定 ID 的项目。
Pydantic 模式
FastAPI 使用 Pydantic 模式来自动验证和验证数据。以下是一个使用 Pydantic 模式的示例:
from pydantic import BaseModel
class Item(BaseModel):
id: int
name: str
@app.post("/items/")
async def create_item(item: Item):
items.append(item)
return item
在这个示例中,我们定义了一个名为 Item 的 Pydantic 模式,用于验证和验证传入的数据。然后,我们使用 @app.post("/items/") 装饰器创建了一个路由,用于创建新的项目。
自动生成 API 文档
FastAPI 自动生成交互式 API 文档,方便开发者查看和使用。以下是如何访问自动生成的 API 文档:
uvicorn main:app --reload
在浏览器中访问 http://127.0.0.1:8000/docs,即可查看 API 文档。
总结
在本教程中,我们从零开始学习了 FastAPI 框架。我们了解了 FastAPI 的主要特点,创建了一个简单的 FastAPI 应用,并学习了如何使用 Pydantic 模式和自动生成 API 文档。通过本教程,你将能够轻松掌握 FastAPI 框架,并打造高效的 API。
