马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
FastAPI教程:快速构建高性能API
先容
FastAPI是一个当代的、快速的(高性能)Web框架,用于构建APIs,基于尺度的Python类型提示。它非常得当用于构建高效、易于维护的API服务。FastAPI支持主动生成文档,输入数据验证和异步编程,且性能靠近Go和Node.js。
本教程目标
本教程将领导你构建一个简单的FastAPI应用,包括:
1. 创建FastAPI项目
2. 界说和处理惩罚API端点
3. 输入数据验证与主动文档
4. 异步支持
5. 摆设FastAPI应用
环境准备
安装FastAPI与Uvicorn
在开始之前,我们必要安装FastAPI和Uvicorn。Uvicorn是一个ASGI服务器,通常与FastAPI一起使用,提供高性能的异步Web服务。
pip install fastapi uvicorn
目录结构
我们发起的项目目录结构如下:
/fastapi-example
├── app/
│ ├── main.py
│ ├── models.py
│ └── schemas.py
├── requirements.txt
└── README.md
创建第一个FastAPI应用
1. 编写 main.py
在app/main.py中,创建FastAPI应用,并界说一个简单的路由:
from fastapi import FastAPI
# 创建FastAPI实例
app = FastAPI()
# 路由:根路径(/)
@app.get("/")
async def read_root():
return {"message": "Hello, World!"}
表明:
FastAPI():创建一个FastAPI实例。
@app.get("/"):界说GET哀求的路由,根路径返回一个简单的JSON相应。
async def read_root():使用异步函数来处理惩罚哀求。
2. 运行应用
可以通过Uvicorn启动应用:
uvicorn app.main:app --reload
app.main:app表示从app/main.py中加载FastAPI实例。
--reload参数使应用在代码修改后主动重载。
3. 访问应用
打开浏览器并访问 http://127.0.0.1:8000/,你应该看到如下输出:
{"message": "Hello, World!"}
路由与哀求
FastAPI支持多种HTTP方法,包括GET、POST、PUT、DELETE等。我们来继续扩展API,增加一个POST哀求,处理惩罚JSON数据。
1. 界说一个Pydantic模子
Pydantic是FastAPI用于数据验证和序列化的工具。我们可以界说一个Pydantic模子来确保API吸收的数据格式正确。
在app/schemas.py中:
from pydantic import BaseModel
# 创建Pydantic模子
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None
表明:
BaseModel是所有Pydantic模子的基类。
name, description, price, tax是模子的字段,类型是Python的数据类型,FastAPI会根据这些类型主动进行数据验证。
2. 添加POST路由
在app/main.py中,界说一个POST路由,吸收Item模子的数据:
from fastapi import FastAPI
from app.schemas import Item
app = FastAPI()
@app.post("/items/")
async def create_item(item: Item):
return {"name": item.name, "price": item.price}
表明:
@app.post("/items/"):界说POST哀求,路径为/items/。
item: Item:FastAPI会主动剖析哀求体中的JSON数据,并将其映射到Item模子。
3. 测试POST哀求
使用工具如Postman或cURL,向 http://127.0.0.1:8000/items/ 发送一个POST哀求:
{
"name": "Laptop",
"description": "A high-end laptop",
"price": 1200.50,
"tax": 100.00
}
相应应该是:
{
"name": "Laptop",
"price": 1200.5
}
主动生成文档
FastAPI主动生成API文档并提供两个界面:
1. Swagger UI:默认在/docs路径下提供。
2. ReDoc:默认在/redoc路径下提供。
你可以访问:
Swagger UI
ReDoc
异步支持
FastAPI支持异步路由函数,可以进步处理惩罚并发哀求的性能。在FastAPI中,异步函数由async def声明,结合异步数据库查询或其他IO利用,能够大幅提拔应用的吞吐量。
@app.get("/items/{item_id}")
async def read_item(item_id: int):
# 模拟异步数据库查询
item = await fake_db_query(item_id)
return {"item": item}
在现实应用中,可以将数据库利用、文件处理惩罚等I/O麋集型任务实现为异步利用,从而提拔性能。
哀求与相应模子
FastAPI答应你为哀求体、相应体及查询参数使用模子。这些模子不仅能进行数据验证,还能主动生成API文档。
1. 自界说相应模子
你可以自界说相应体的结构,保证返回的数据符合预期格式:
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
class ResponseModel(BaseModel):
success: bool
data: Item
@app.post("/create_item/", response_model=ResponseModel)
async def create_item(item: Item):
return ResponseModel(success=True, data=item)
2. 查询参数模子
FastAPI答应你通过界说模子来处理惩罚查询参数,使其更清晰易读:
from fastapi import FastAPI, Query
@app.get("/items/")
async def get_items(skip: int = Query(0, alias="page", ge=0), limit: int = Query(10, le=100)):
return {"skip": skip, "limit": limit}
在上面的代码中,我们使用了Query类来界说查询参数。ge表示参数的最小值,le表示最大值。
摆设FastAPI应用
使用Docker摆设
FastAPI可以与Docker一起使用,方便摆设到任何环境。以下是一个简单的Dockerfile示例:
# 使用官方Python镜像
FROM python:3.9
# 设置工作目录
WORKDIR /app
# 安装依赖
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 复制项目代码
COPY . .
# 运行应用
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
构建和运行Docker镜像
docker build -t fastapi-example .
docker run -d -p 8000:8000 fastapi-example
现在,FastAPI应用就可以通过http://localhost:8000访问。
总结
FastAPI是一个功能强盛、易于使用的框架,提供了强类型的验证、主动生成文档和高效的异步支持。通过本教程,我们创建了一个简单的FastAPI应用,并演示了怎样处理惩罚GET和POST哀求,进行数据验证,并实现API文档的主动生成。你还可以使用Docker将应用摆设到生产环境中。
希望这篇教程能够帮助你快速上手FastAPI,并开始构建高效的API服务!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |