在当今的软件开发世界中,构建高性能的 API 是至关重要的。幸运的是,FastAPI 提供了一个现代且易于使用的框架,帮助开发者快速构建这些 API。今天,我们将一起探索 FastAPI 的基本用法,从安装到构建第一个 API。
1. FastAPI 简介
FastAPI 是一个现代的、快速的(高性能的)Web 框架,用于构建 API。它基于标准 Python 类型提示,支持 Python 3.6 及以上版本。FastAPI 旨在提供快速开发体验,并自动处理许多常见的任务,如数据验证和序列化。
2. 安装 FastAPI
首先,你需要安装 FastAPI。打开你的终端或命令提示符,并运行以下命令:
pip install fastapi
你还需要安装一个 ASGI 服务器,如 uvicorn
,来运行你的 FastAPI 应用:
pip install uvicorn
3. 创建第一个 FastAPI 应用
让我们创建一个简单的 FastAPI 应用。首先,创建一个新的 Python 文件,例如 main.py
,并写入以下代码:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"Hello": "World"}
这是一个非常基础的 FastAPI 应用,它定义了一个根路由 /
,当访问这个路由时,会返回一个包含 “Hello World” 的 JSON 对象。
4. 运行你的 FastAPI 应用
现在,你可以运行你的 FastAPI 应用了。在终端中,运行以下命令:
uvicorn main:app --reload
这将启动一个开发服务器,地址通常是 http://127.0.0.1:8000
。你可以在浏览器中访问这个地址,看到返回的 JSON 对象。
5. 路径操作和参数
FastAPI 允许你定义路径操作,这些操作可以接收不同类型的参数。
路径参数
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
查询参数
@app.get("/items/")
async def read_items(q: str = None):
return {"q": q}
6. 数据验证和序列化
FastAPI 自动处理数据验证和序列化。你可以使用 Python 类型提示来定义请求和响应的数据格式。
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None
@app.post("/items/")
async def create_item(item: Item):
if item.tax is None:
item.tax = 10.5 # 假设默认税率为 10.5%
return item
7. 依赖注入
FastAPI 支持依赖注入,这使得你可以轻松地管理请求的依赖关系。
from fastapi import FastAPI, Depends
app = FastAPI()
async def get_db():
return "Database connection"
@app.get("/db/")
async def read_db(db: str = Depends(get_db)):
return {"db": db}
8. Swagger UI 和自动文档
FastAPI 自动为你的 API 提供了 Swagger UI 和自动文档。你可以通过访问 /docs
来查看这些文档。
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"Hello": "World"}
当你运行你的应用并访问 http://127.0.0.1:8000/docs
时,你将看到一个交互式的文档页面,展示你的 API 路径和参数。