16 FastAPI路径参数的使用示例
在上一篇文章中,我们探讨了如何使用请求体与响应处理来返回JSON数据。在本篇文章中,我们将重点关注FastAPI中的路径参数,以及如何使用这些参数来构建动态的API接口。接下来,我们将为您展示一个完整的示例,帮助您更好地理解路径参数的使用方式。
什么是路径参数?
在RESTful API设计中,路径参数是指通过URL中的特定位置来传递的参数。这些参数通常用于标识资源的唯一性,比如用户ID、产品ID等。在FastAPI中,您可以通过在函数的参数中定义特定类型的路径参数来轻松实现。
基本示例:使用路径参数
我们将创建一个简单的示例,构建一个API,它可以返回特定用户的信息。首先,我们需要安装fastapi
和uvicorn
(用于运行FastAPI应用):
pip install fastapi uvicorn
接下来,我们编写一个FastAPI应用:
from fastapi import FastAPI
app = FastAPI()
# 假设我们有一些用户数据
users = {
1: {"name": "Alice", "age": 30},
2: {"name": "Bob", "age": 25},
3: {"name": "Charlie", "age": 35},
}
# 使用路径参数来获取用户信息
@app.get("/users/{user_id}")
async def get_user(user_id: int):
user = users.get(user_id)
if user:
return user
return {"error": "User not found"}
在上面的代码中,我们做了以下事情:
- 创建API实例:使用
FastAPI()
创建一个API实例。 - 定义用户数据:创建一个简单的字典,模拟用户数据库。
- 定义路径参数:通过在路径
/users/{user_id}
中使用大括号,表示user_id
是一个路径参数。 - 获取用户信息:在
get_user
函数中,根据传入的user_id
返回相应的用户数据。如果用户不存在,则返回错误信息。
运行应用
我们可以使用以下命令运行上述FastAPI应用:
uvicorn main:app --reload
然后,我们可以在浏览器中访问 http://127.0.0.1:8000/users/1
,您应该会看到如下的JSON响应:
{
"name": "Alice",
"age": 30
}
如果您访问一个不存在的用户,例如 http://127.0.0.1:8000/users/99
,则会收到如下响应:
{
"error": "User not found"
}
路径参数的类型强制
在FastAPI中,路径参数的类型可以通过函数参数的类型注解确定。比如在上面的例子中,user_id: int
确保传入的路径参数是整数类型。FastAPI会自动进行类型验证,如果传入的参数类型不匹配,则会返回406错误。
示例:多个路径参数
我们还可以使用多个路径参数来构建复杂的API。例如,让我们扩展一下这个应用,增加用户的地址信息:
# 更新用户信息,添加地址数据
users = {
1: {"name": "Alice", "age": 30, "city": "New York"},
2: {"name": "Bob", "age": 25, "city": "Los Angeles"},
3: {"name": "Charlie", "age": 35, "city": "Chicago"},
}
@app.get("/users/{user_id}/address")
async def get_user_address(user_id: int):
user = users.get(user_id)
if user:
return {"city": user["city"]}
return {"error": "User not found"}
在这个例子中,我们增加了一个新的路径 /users/{user_id}/address
,返回指定用户的城市信息。
请求示例
访问 http://127.0.0.1:8000/users/1/address
,您会得到:
{
"city": "New York"
}
结论
在本篇文章中,我们深入探讨了在FastAPI中如何使用路径参数来创建动态的API接口。路径参数允许我们根据请求的URL动态获取资源,使得API更加灵活。在下一篇文章中,我们将讨论查询参数的使用,同样也是构建RESTful API不可或缺的一部分。
如果您对本教程有任何疑问或建议,欢迎在评论区留言。感谢您的阅读!