FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,由 Python 3.6+ 支持。它具有异步支持,并且易于与数据库和其他工具集成。本文将带你快速上手 FastAPI,并为你提供实战攻略,帮助你打造高效响应式的 API。
一、FastAPI 简介
FastAPI 是一个基于 Starlette 和 Pydantic 的 Web 框架,旨在提供快速的开发体验。它具有以下特点:
- 异步支持:使用 Python 3.7+ 的异步功能,提高性能。
- 自动文档:自动生成交互式 API 文档。
- 类型安全:使用 Pydantic 进行数据验证和序列化。
- 易于集成:支持与数据库、缓存和其他工具集成。
二、环境搭建
在开始之前,确保你的 Python 版本为 3.6 或更高。以下是安装 FastAPI 的步骤:
pip install fastapi uvicorn
三、创建第一个 FastAPI 应用
- 创建项目结构:
my_project/
│
├── main.py
└── app/
├── __init__.py
└── models.py
- 编写
main.py:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"Hello": "World"}
- 运行应用:
uvicorn main:app --reload
访问 http://127.0.0.1:8000/,你应该能看到以下响应:
{
"Hello": "World"
}
四、定义路由和视图函数
FastAPI 使用 Python 函数作为路由和视图函数。以下是一些示例:
1. 获取数据
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
2. 创建数据
@app.post("/items/")
async def create_item(item: Item):
return item
3. 更新数据
@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item):
return {"item_id": item_id, "item": item}
4. 删除数据
@app.delete("/items/{item_id}")
async def delete_item(item_id: int):
return {"item_id": item_id}
五、使用 Pydantic 进行数据验证
Pydantic 是一个 Python 库,用于数据验证和序列化。在 FastAPI 中,你可以使用 Pydantic 模型来定义输入数据的结构。
from pydantic import BaseModel
class Item(BaseModel):
id: int
name: str
description: str = None
price: float
tax: float = None
现在,你可以使用 Item 模型来验证和序列化输入数据。
六、自动生成 API 文档
FastAPI 会自动生成交互式 API 文档,你可以通过访问 http://127.0.0.1:8000/docs 或 http://127.0.0.1:8000/redoc 来查看。
七、部署 FastAPI 应用
部署 FastAPI 应用有多种方式,例如使用 Heroku、Gunicorn 或 uWSGI。以下是一个使用 Gunicorn 部署的示例:
gunicorn -w 4 -b 0.0.0.0:8000 main:app
这样,你的 FastAPI 应用就可以在互联网上访问了。
八、总结
FastAPI 是一个功能强大、易于使用的 Web 框架,可以帮助你快速构建高效响应式的 API。通过本文的介绍,你应该已经掌握了 FastAPI 的基本用法和实战技巧。现在,你可以开始创建自己的 FastAPI 应用,并享受异步编程带来的便利吧!
