12 FastAPI 路由与请求处理之路径参数

在上一篇文章中,我们深入探讨了 FastAPI 中的 HTTP 方法如何被使用。本篇文章将专注于路径参数的使用,帮助你理解如何在 FastAPI 中提取和使用路径参数。路径参数是构成 URL 的一部分,通常用于获取特定资源的信息。

什么是路径参数?

路径参数是嵌入在路径中的变量,它们使得 URL 更具动态性。比如,假设我们有一个用户管理系统,用户的唯一标识符是用户 ID。我们可以定义一个 URL /users/{user_id} 来获取某个特定用户的信息,其中 {user_id} 是一个路径参数。

FastAPI 中如何定义路径参数

FastAPI 允许我们在路由中直接定义路径参数。下面是一个基本的示例,展示了如何创建一个带有路径参数的路由:

1
2
3
4
5
6
7
from fastapi import FastAPI

app = FastAPI()

@app.get("/users/{user_id}")
async def read_user(user_id: int):
return {"user_id": user_id}

在这个例子中,{user_id} 是路径参数。我们指定了一个 GET 请求,当访问 /users/1 时,user_id 将被解析为 1,并作为整数传递给 read_user 函数。

路径参数的类型

在 FastAPI 中,路径参数能够自动进行数据验证和转换。例如,在上面的例子中,如果你尝试访问 /users/abc,FastAPI 将返回一个 422 的错误,表示参数类型不正确。

你可以使用多个路径参数。以下是一个包含用户 ID 和其他信息的示例:

1
2
3
@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}

访问 URL /users/1/items/10 时,user_id 将为 1item_id 将为 10

如何处理可选路径参数

FastAPI 支持可选路径参数,需要使用默认值来标识。下面是一个示例,展示了如何处理可选的路径参数:

1
2
3
@app.get("/users/{user_id}/tags/{tag_id}")
async def read_user_tag(user_id: int, tag_id: int = None):
return {"user_id": user_id, "tag_id": tag_id}

在这个例子中,tag_id 是一个可选的路径参数。如果不提供 tag_id,它的默认值将为 None

完整示例

下面是一个完整的 FastAPI 应用程序示例,结合了路径参数的使用,包含用户和他们的项目:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from fastapi import FastAPI

app = FastAPI()

@app.get("/users/{user_id}")
async def read_user(user_id: int):
return {"user_id": user_id, "username": f"user_{user_id}"}

@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, "item_name": f"item_{item_id}"}

@app.get("/users/{user_id}/tags/{tag_id}")
async def read_user_tag(user_id: int, tag_id: int = None):
return {"user_id": user_id, "tag_id": tag_id if tag_id else "no tag"}

小结

在这一部分中,我们学习了如何在 FastAPI 中定义和使用路径参数,如何处理不同类型和可选参数。路径参数使得创建 RESTful API 时能够灵活地访问特定的资源。

在下一篇文章中,我们将继续探索请求体的处理,包括如何接收和验证请求体中的数据。希望本篇能够帮助你深入了解路径参数的使用,打下坚实的基础。如果你对 FastAPI 有更多热情,欢迎继续关注我们的系列教程!

12 FastAPI 路由与请求处理之路径参数

https://zglg.work/python-fastapi-zero/12/

作者

AI免费学习网(郭震)

发布于

2024-08-17

更新于

2024-08-18

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论