推荐答案
在 FastAPI 中,路径参数是通过在路径中使用花括号 {}
来定义的。你可以在路径操作函数的参数中声明这些路径参数,FastAPI 会自动将它们解析并传递给函数。
from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") async def read_item(item_id: int): return {"item_id": item_id}
在这个例子中,item_id
是一个路径参数,FastAPI 会自动将其解析为整数类型,并传递给 read_item
函数。
本题详细解读
路径参数的基本使用
路径参数是 FastAPI 中用于从 URL 中提取值的一种方式。通过在路径中使用花括号 {}
,你可以定义一个路径参数。FastAPI 会自动将路径中的值解析为相应的类型,并传递给路径操作函数。
例如,在以下代码中:
@app.get("/items/{item_id}") async def read_item(item_id: int): return {"item_id": item_id}
/items/{item_id}
定义了一个路径参数item_id
。item_id: int
指定了item_id
的类型为整数。FastAPI 会自动将 URL 中的item_id
转换为整数类型。
路径参数的类型转换
FastAPI 支持多种类型的路径参数,包括 int
、float
、str
等。你可以在路径操作函数的参数中指定路径参数的类型,FastAPI 会自动进行类型转换。
例如:
@app.get("/items/{item_id}") async def read_item(item_id: int): return {"item_id": item_id}
在这个例子中,如果 URL 中的 item_id
是一个有效的整数,FastAPI 会将其转换为整数类型并传递给 read_item
函数。如果 item_id
不是一个有效的整数,FastAPI 会返回一个 422 错误(Unprocessable Entity),表示请求参数无效。
路径参数的顺序
在 FastAPI 中,路径参数的顺序非常重要。FastAPI 会按照路径中定义的顺序来匹配路径参数。
例如:
@app.get("/users/{user_id}/items/{item_id}") async def read_user_item(user_id: int, item_id: int): return {"user_id": user_id, "item_id": item_id}
在这个例子中,user_id
和 item_id
的顺序必须与路径中的顺序一致。如果顺序不一致,FastAPI 将无法正确解析路径参数。
路径参数的可选值
默认情况下,路径参数是必需的。如果你希望某个路径参数是可选的,可以使用 Optional
类型,并在路径中提供一个默认值。
例如:
from typing import Optional @app.get("/items/{item_id}") async def read_item(item_id: Optional[int] = None): return {"item_id": item_id}
在这个例子中,item_id
是一个可选的路径参数。如果 URL 中没有提供 item_id
,FastAPI 会将其设置为 None
。
路径参数的正则表达式
FastAPI 还支持使用正则表达式来定义路径参数。你可以通过在路径参数后添加正则表达式来限制路径参数的格式。
例如:
@app.get("/items/{item_id:int}") async def read_item(item_id: int): return {"item_id": item_id}
在这个例子中,item_id
必须是一个整数。如果 item_id
不是一个有效的整数,FastAPI 会返回一个 404 错误(Not Found)。
总结
路径参数是 FastAPI 中非常强大且灵活的功能,允许你从 URL 中提取值并将其传递给路径操作函数。通过合理使用路径参数,你可以构建出更加动态和灵活的 API。