FastAPI是一个现代的、快速(高性能)的Web框架,用于构建APIs,特别是与Python 3.6+版本兼容的异步编程。它具有以下几个特点:
- 高性能:基于Starlette框架,FastAPI能够处理大量请求,适合构建高并发应用。
- 自动生成文档:使用OpenAPI标准,FastAPI可以自动生成API文档,支持Swagger UI和ReDoc。
- 类型检查:支持Python类型提示,能够在运行时验证请求数据的类型。
- 易于学习:使用简单直观,适合新手快速上手。
一、环境安装
首先,需要安装FastAPI和一个ASGI服务器(如uvicorn)来运行你的应用。
pip install fastapi uvicorn
二、基本用法
以下是一个简单的FastAPI应用的示例:
2.1 创建应用
创建一个Python文件main.py
,并添加以下内容:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Hello, World!"}
2.2 运行应用
使用uvicorn运行应用:
uvicorn main:app --reload
main
是你的Python文件名(去掉.py
后缀)。app
是FastAPI实例的名称。--reload
使得代码更改后自动重载,非常适合开发阶段使用。
2.3 访问API
打开浏览器并访问 http://127.0.0.1:8000/
,你应该能够看到以下JSON响应:
{"message": "Hello, World!"}
2.4 自动生成文档
FastAPI会自动生成API文档,你可以访问以下地址:
- Swagger UI:
http://127.0.0.1:8000/docs
- ReDoc:
http://127.0.0.1:8000/redoc
三、请求参数与数据验证
FastAPI支持多种请求参数类型,包括路径参数、查询参数和请求体。下面是一些示例。
3.1 路径参数
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
访问 http://127.0.0.1:8000/items/5
,返回:
{"item_id": 5}
3.2 查询参数
@app.get("/items/")
async def read_items(q: str = None):
return {"q": q}
访问 http://127.0.0.1:8000/items/?q=fastapi
,返回:
{"q": "fastapi"}
3.3 请求体
使用Pydantic模型来验证请求体:
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
is_offer: bool = None
@app.post("/items/")
async def create_item(item: Item):
return item
你可以发送一个POST请求到 http://127.0.0.1:8000/items/
,请求体示例:
{
"name": "Item Name",
"price": 99.99,
"is_offer": true
}
返回结果将是:
{
"name": "Item Name",
"price": 99.99,
"is_offer": true
}
四、处理异常
FastAPI允许自定义异常处理,以下是一个简单的示例:
from fastapi import HTTPException
@app.get("/items/{item_id}")
async def read_item(item_id: int):
if item_id < 0:
raise HTTPException(status_code=400, detail="Item ID must be positive")
return {"item_id": item_id}
如果传递负值,将返回400错误:
{
"detail": "Item ID must be positive"
}
五、中间件
FastAPI支持中间件,可以用来处理请求和响应。在应用中添加中间件示例:
from fastapi.middleware.cors import CORSMiddleware
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # 允许所有源
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
六、总结
FastAPI是一个强大且易用的Web框架,非常适合构建API和异步应用。通过自动生成文档、数据验证和高性能等特性,它能够帮助开发者快速构建高质量的Web应用。希望通过本文的介绍,你能对FastAPI有一个初步的了解,并能在实际项目中应用。
如果你对FastAPI感兴趣,可以查看官方文档获取更多详细信息和高级用法。