在 FastAPI 中,路径装饰器(也叫“路由装饰器”)是用来将 HTTP 请求路径和请求方法绑定到一个 Python 函数(视图函数)上的核心机制。
✅ 常用的路径装饰器
FastAPI 提供了以下几个装饰器,对应常见的 HTTP 请求方法:
| 装饰器 | 对应的 HTTP 方法 |
|---|---|
@app.get() | GET(获取资源) |
@app.post() | POST(创建资源) |
@app.put() | PUT(更新资源) |
@app.delete() | DELETE(删除资源) |
@app.patch() | PATCH(部分更新资源) |
@app.options() | OPTIONS(了解服务端支持的 HTTP 方法) |
@app.head() | HEAD(类似 GET 但不返回 body) |
✅ 基本用法示例
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello World"}
@app.get("/items/{item_id}")
def read_item(item_id: int):
return {"item_id": item_id}
@app.post("/items/")
def create_item(item: dict):
return {"created_item": item}✅ 支持参数和类型校验
你可以直接在装饰器路径中定义参数,还可以自动校验类型:
@app.get("/users/{user_id}")
def get_user(user_id: int):
return {"user_id": user_id}如果你访问 /users/abc 会自动返回 422 错误,因为 user_id 不是整数。
✅ 添加额外参数(如 tags、summary、description)
@app.get("/books/", tags=["Books"], summary="获取所有书籍", description="返回书籍列表")
def list_books():
return [{"id": 1, "title": "Python 入门"}]@app.get(
path, # 请求路径,如 "/items/{item_id}"
*,
response_model=None, # 指定响应模型(Pydantic 类)
status_code=200, # 默认返回状态码
tags=None, # 接口分组(列表),用于接口文档
summary=None, # 简要描述,用于接口文档
description=None, # 接口描述(支持 Markdown)
response_description="Successful Response", # 响应内容描述
deprecated=False, # 是否废弃此接口(文档中标记)
operation_id=None, # 手动指定 OpenAPI operation ID
responses=None, # 自定义响应结构(状态码、示例等)
deprecated=True #接口弃用,默认为false
)
✅ 多个路径绑定同一函数(可选)
@app.get("/a")
@app.get("/b")
def multi_path():
return {"info": "这个接口可以通过 /a 或 /b 访问"}