在 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 访问"}

正文到此结束
最后修改:2025 年 07 月 21 日
如果觉得我的文章对你有用,请随意赞赏