一、什么是路径参数
路径参数是 URL 路径的一部分,用于识别特定的资源。在 FastAPI 中,路径参数通过在路径字符串中使用大括号 {} 来定义。例如,在 URL /items/{item_id} 中,{item_id} 就是一个路径参数。
二、定义路径参数
在 FastAPI 中,定义路径参数非常简单。只需在路由装饰器中使用大括号 {} 将参数名称包围起来,然后在函数签名中为参数指定类型即可。以下是一个简单的示例:
python
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 的路径参数,其类型为整数。当用户访问 /items/123 这样的 URL 时,FastAPI 会将 123 解析为整数,并将其传递给 read_item 函数。
三、路径参数的约束和默认值
除了基本的数据类型转换外,FastAPI 还允许您为路径参数设置约束和默认值。这可以帮助您更精确地控制资源的访问。以下是一个示例:
python
from fastapi import FastAPI, Path
app = FastAPI()
@app.get("/users/{user_id}")
async def read_user(user_id: int = Path(..., gt=0)):
return {"user_id": user_id}
在这个例子中,我们为 user_id 参数设置了一个约束条件 gt=0,表示该参数的值必须大于零。同时,我们还使用 Path 函数为 user_id 参数设置了一个默认值 ...,表示该参数是必需的。如果用户访问的 URL 不包含有效的 user_id 参数,FastAPI 将返回一个错误。
四、使用路径参数构建 RESTful API
路径参数是构建 RESTful API 的关键组件之一。通过使用路径参数,您可以轻松地识别和操作特定的资源。以下是一个使用路径参数构建 RESTful API 的示例:
python
from fastapi import FastAPI, HTTPException, status
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: int):
# 从数据库中获取指定的 item 数据
item = items.get(item_id) # 假设 items 是一个字典或数据库查询接口
if item is None:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Item not found")
return item
在这个例子中,我们定义了一个名为 Item 的 Pydantic 模型,用于表示商品数据。然后,我们创建了一个 GET 请求的路由 /items/{item_id},用于获取指定商品的详细信息。在函数内部,我们使用 items.get(item_id) 从数据源中获取商品数据。如果找不到指定的商品,我们将返回一个 HTTP 404 错误。否则,我们将返回商品数据作为响应体。
五、总结与拓展学习建议
通过本教程的学习,您应该已经掌握了 FastAPI 中路径参数的基本使用方法。为了更深入地了解 FastAPI 和相关技术的使用,建议您参考官方文档和教程进行深入学习。下一章:《表单提交》