Python高性能web框架——FastAPI快速入门
FastAPI 是一个用于构建 APIs 的现代、快速(高性能)web框架,基于标准 Python 类型提示。它的速度与 Node.js 和 Go 相媲美,支持异步编程,适合用于构建快速、可扩展的web应用程序。FastAPI 的目标是提高开发者的生产力,它使用 Python 的型别提示来自动生成文档,更加易于理解和使用。
安装 FastAPI
首先,我们需要安装 FastAPI 和用于 ASGI 服务器的 uvicorn
。可以使用 pip 来安装它们:
pip install fastapi uvicorn
创建第一个 FastAPI 应用
接下来,我们将创建一个简单的 FastAPI 应用,展示一些基本功能。下面是一个代码示例,展示如何设置一个简单的 API 服务。
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
在这个例子中,我们定义了一个 FastAPI 应用,并创建了两个路由。第一个是根路径 /
,返回一个简单的 JSON 响应。第二个是带参数的路径 /items/{item_id}
,它接收一个整数的 item_id
和一个可选的查询参数 q
。
运行应用
要运行 FastAPI 应用,在终端中执行以下命令:
uvicorn main:app --reload
--reload
标志使服务器在代码更改时自动重启,非常适合开发阶段。
然后你可以在浏览器访问 http://127.0.0.1:8000
查看根路径,访问 http://127.0.0.1:8000/items/1?q=test
可以测试带参数的路由。
自动生成文档
FastAPI 的一个显著特点是它能自动生成 API 文档。你可以访问 http://127.0.0.1:8000/docs
来查看基于 Swagger UI 的文档,或者访问 http://127.0.0.1:8000/redoc
来查看 ReDoc 风格的文档。
这使得它非常方便开发、测试和维护 API。
请求体和响应模型
FastAPI 还支持使用 Pydantic 来定义请求体和响应的数据模型。以下是一个示例:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
is_offer: bool = None
@app.post("/items/")
def create_item(item: Item):
return {"item_name": item.name, "item_price": item.price, "is_offer": item.is_offer}
在这个例子中,我们定义了一个 Item 类,使用 Pydantic 的 BaseModel
来描述请求体中的数据结构。当我们发送一个 POST 请求到 /items/
路径时,FastAPI 会自动解析请求体并验证数据。
结束语
FastAPI 是一个非常强大的框架,它通过类型提示和自动文档生成,大大提高了开发者的效率。它还支持异步编程,非常适合需要高性能的应用场景。无论是简单的 API 还是复杂的微服务架构,FastAPI 都能提供良好的支持。希望通过本教程,你可以快速上手这个高性能的 Python web 框架。