FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,由 Python 3.6+ 语法编写。它具有异步支持,并且可以与标准 Python 类型注解一起使用,从而提供自动请求和响应验证以及依赖注入。对于新手来说,FastAPI 是一个功能强大且易于学习的框架。以下是一个详细的教程指南,帮助你快速上手FastAPI。
1. 安装FastAPI
在开始之前,确保你的系统上安装了 Python。然后,通过以下命令安装 FastAPI:
pip install fastapi uvicorn
这里,uvicorn 是一个 ASGI 服务器,用于运行 FastAPI 应用程序。
2. 创建你的第一个FastAPI应用
创建一个新的 Python 文件,例如 main.py,并添加以下代码:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Hello World"}
这段代码创建了一个简单的 FastAPI 应用程序,其中包含一个路由 /,它返回一个包含消息 “Hello World” 的 JSON 响应。
3. 路由和操作
FastAPI 中的每个路由都称为操作。它们通过装饰器 @app.get()、@app.post() 等定义,这些装饰器告诉 FastAPI 如何处理特定类型的 HTTP 请求。
3.1 获取请求参数
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
在这个例子中,我们定义了一个新路由 /items/{item_id},它接受一个路径参数 item_id。
3.2 使用查询参数
@app.get("/items/")
async def read_items(q: str = None):
if q:
return {"q": q}
return {"message": "Query parameter is missing"}
这里,我们添加了一个查询参数 q,它允许用户在请求中发送一个查询字符串。
4. 数据验证和序列化
FastAPI 使用 Pydantic 库进行数据验证和序列化。Pydantic 允许你定义数据结构,并自动进行验证。
from pydantic import BaseModel
class Item(BaseModel):
id: int
name: str
description: str = None
price: float
tax: float = None
使用 Pydantic 模型定义后,你可以轻松地将请求的数据验证为正确的类型。
@app.post("/items/")
async def create_item(item: Item):
return item
这段代码定义了一个新的 POST 路由,它接受一个 Item 对象,并在响应中返回它。
5. 异步支持
FastAPI 是异步的,这意味着它可以同时处理多个请求。使用 async 和 await 关键字定义异步函数。
@app.get("/items/{item_id}")
async def read_item(item_id: int):
# 模拟异步数据库调用
await asyncio.sleep(1)
return {"item_id": item_id}
在这个例子中,我们使用 await asyncio.sleep(1) 来模拟一个耗时的操作。
6. 运行你的FastAPI应用
使用以下命令运行你的应用程序:
uvicorn main:app --reload
--reload 参数使服务器在代码更改时自动重启。
7. 高级功能
FastAPI 提供了许多高级功能,例如中间件、依赖注入、认证和授权等。你可以根据自己的需求进行探索。
总结
FastAPI 是一个功能强大且易于使用的框架,适合快速构建高效的 API。通过上述教程,你应该能够快速上手 FastAPI 并开始构建自己的 API。祝你好运!
