FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,与 Python 3.6+ 类型提示一起使用。它具有异步处理能力,这意味着它可以同时处理多个请求,而不需要为每个请求创建新的线程或进程。这使得 FastAPI 在处理高并发请求时非常高效。
一、FastAPI 简介
FastAPI 的设计灵感来源于 Starlette 和 Pydantic。它旨在提供一种简单、直观的方式来创建高性能的 API。以下是一些 FastAPI 的关键特点:
- 异步处理:FastAPI 是异步的,这意味着它可以同时处理多个请求。
- 类型安全:使用 Python 类型提示来验证数据。
- 自动文档:FastAPI 会自动生成交互式文档,方便开发者测试和调试。
- 依赖注入:FastAPI 支持依赖注入,使得代码更加模块化和可测试。
二、安装 FastAPI
在开始之前,确保你已经安装了 Python 3.6 或更高版本。然后,使用以下命令安装 FastAPI:
pip install fastapi uvicorn
三、创建第一个 FastAPI 应用
以下是一个简单的 FastAPI 应用示例:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Hello World"}
在这个例子中,我们创建了一个名为 app 的 FastAPI 实例,并定义了一个路由 /。当访问这个路由时,会返回一条消息 “Hello World”。
四、路由和视图函数
FastAPI 使用 Python 函数作为路由处理程序。以下是一些常用的路由和视图函数:
@app.get():用于处理 GET 请求。@app.post():用于处理 POST 请求。@app.put():用于处理 PUT 请求。@app.delete():用于处理 DELETE 请求。
以下是一个使用 @app.get() 的示例:
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
在这个例子中,我们定义了一个路由 /items/{item_id},它接受一个名为 item_id 的路径参数,并返回该 ID 对应的项。
五、响应模型
FastAPI 使用 Pydantic 模型来定义响应数据。以下是一个示例:
from pydantic import BaseModel
class Item(BaseModel):
id: int
name: str
在这个例子中,我们定义了一个名为 Item 的 Pydantic 模型,它包含 id 和 name 两个字段。
六、依赖注入
FastAPI 支持依赖注入,这使得代码更加模块化和可测试。以下是一个示例:
from fastapi import FastAPI, Depends, HTTPException
from sqlalchemy.orm import Session
from . import models, schemas
app = FastAPI()
@app.get("/items/")
async def read_items(db: Session = Depends(get_db)):
return db.query(models.Item).all()
在这个例子中,我们使用 Depends 函数来注入数据库会话 db。
七、自动文档
FastAPI 会自动生成交互式文档,方便开发者测试和调试。以下是如何访问自动文档:
uvicorn main:app --reload
在浏览器中访问 http://127.0.0.1:8000/docs,即可查看自动生成的文档。
八、总结
FastAPI 是一个功能强大、易于使用的 Web 框架。通过本文的介绍,相信你已经对 FastAPI 有了一定的了解。接下来,你可以尝试创建自己的 FastAPI 应用,并探索更多高级功能。
祝你在 FastAPI 之旅中一切顺利!
