背景
如果你学过Java,你应该记得path variable,这和FastAPI中的path Parameters 是一个意思。
路径参数,顾名思义,就是在路径上的参数,比如 /user/123,这里的 123 就是路径参数。
路径参数是用于标识资源或指定唯一标识符的变量,它们通常在URL的路径部分传递。使用路径参数的主要目的是为了构建灵活和可重用的API端点,允许客户端通过更改URL中的特定部分来请求不同的资源。
例如,在一个RESTful API中,你可能有一个用于获取单个用户的端点,该端点可能会如下所示:
GET /users/{user_id}
这里的 {user_id}
就是一个路径参数,它表示要获取的具体用户。当你实际调用这个端点时,{user_id}
会被具体的用户ID替换,例如:
GET /users/123
这样就可以返回用户ID为123的用户信息。
代码
from fastapi import FastAPI
app = FastAPI()
# 这里是假设users是数据库中的数据
users = {
1: {
"name": "小明",
"age": 20,
"gender": "男",
"hobby": ["篮球", "足球", "乒乓球", "羽毛球"]
},
2: {
"name": "王武",
"age": 40,
"gender": "男",
"hobby": ["抽烟", "喝酒", "烫头", "羽毛球"]
},
}
@app.get("/user/{id}")
async def read_item(id: int):
return {
"code": 200, "user": users.get(id)}
测试
当我们访问http://localhost:8000/user/1时,可以得到结果
{
"code": 200,
"user": {
"name": "小明",
"age": 20,
"gender": "男",
"hobby": [
"篮球",
"足球",
"乒乓球",
"羽毛球"
]
}
}
你也可以将参数换成2,或者其他数字试试。
总结
使用路径参数的好处包括:
- 明确性:路径参数使得URL更具描述性和易于理解,因为它们清楚地表明了正在访问哪个资源。
- 灵活性:路径参数允许客户端根据需要请求不同的资源实例。
- 重用性:使用路径参数可以创建通用的路由处理函数,这些函数可以处理多种不同的资源,只要它们遵循相同的模式。
- 可扩展性:随着系统的增长,添加新的资源实例变得容易,只需要在URL中插入适当的参数即可。
此外,路径参数也常常与HTTP方法(如 GET
, POST
, PUT
, DELETE
等)结合使用,以实现资源的CRUD操作。