FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,由 Python 3.6+ 支持。它具有异步架构,这意味着它可以处理大量并发连接,而不需要多线程或多进程。本文将带你入门 FastAPI,从安装到构建一个简单的 API。
安装 FastAPI
首先,确保你的环境中安装了 Python 3.6 或更高版本。然后,使用 pip 安装 FastAPI:
pip install fastapi
你可能还需要安装 Uvicorn,这是一个 ASGI 服务器,用于运行 FastAPI 应用:
pip install uvicorn
快速开始
创建项目
创建一个新的目录,用于存放你的 FastAPI 项目。在这个目录中,创建一个名为 main.py 的文件。
编写第一个 API
在 main.py 文件中,编写以下代码:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Hello World"}
这段代码创建了一个名为 read_root 的端点,当访问根 URL (/) 时,它会返回一个包含消息 “Hello World” 的 JSON 对象。
运行应用
在终端中,运行以下命令来启动服务器:
uvicorn main:app --reload
这将启动一个本地开发服务器,并监听端口 8000。你可以通过访问 http://127.0.0.1:8000 来测试你的 API。
深入了解 FastAPI
路由和端点
FastAPI 使用 Python 路由和端点来定义 API。你可以使用 @app.get()、@app.post()、@app.put()、@app.delete() 等装饰器来定义不同的 HTTP 方法。
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
在这个例子中,我们定义了一个 /items/{item_id} 的端点,它接受一个名为 item_id 的路径参数。
数据验证
FastAPI 提供了内置的数据验证和序列化。你可以使用 Pydantic 模型来定义请求和响应的数据结构。
from pydantic import BaseModel
class Item(BaseModel):
id: int
name: str
description: str = None
price: float
tax: float = None
@app.post("/items/")
async def create_item(item: Item):
return item
在这个例子中,我们定义了一个 Item 模型,并在创建新项目时使用它来验证和序列化请求数据。
异步处理
FastAPI 是异步的,这意味着你可以在函数中使用 async 和 await 关键字。这使得 FastAPI 能够处理大量并发请求。
@app.get("/items/{item_id}")
async def read_item(item_id: int):
# 异步操作,例如数据库查询或 HTTP 请求
return {"item_id": item_id}
中间件
FastAPI 支持中间件,允许你在请求和响应之间添加自定义逻辑。
from fastapi import Request
@app.middleware("http")
async def log_requests(request: Request, call_next):
print(f"Request: {request.method} {request.url}")
response = await call_next(request)
print(f"Response: {response.status_code}")
return response
在这个例子中,我们创建了一个中间件来记录请求和响应。
总结
FastAPI 是一个功能强大的 Web 框架,可以帮助你快速构建高效的 API。通过本文的教程,你应该已经掌握了 FastAPI 的基本概念和用法。现在,你可以开始构建自己的 API,并利用 FastAPI 的强大功能来提高你的开发效率。
