FastAPI 中如何使用路径操作装饰器中的 dependencies 参数?

推荐答案

在 FastAPI 中,dependencies 参数用于在路径操作装饰器中注入依赖项。这些依赖项可以是函数、类或其他可调用对象,它们会在处理请求之前执行,并且可以返回一些数据或执行一些操作。

-- -------------------- ---- -------
---- ------- ------ -------- -------- -------------

--- - ---------

--- -------------------- --- - ----- ----- --- - -- ------ --- - -----
    ------ ----- -- ------- ----- -------- ------

------------------- ------------------------------------------
----- --- -------------
    ------ ----------- ------ -------

在这个例子中,common_parameters 函数被用作依赖项,并通过 dependencies 参数注入到 /items/ 路径操作中。当请求到达 /items/ 时,common_parameters 会首先执行,并返回一个包含查询参数的字典。

本题详细解读

1. 什么是 dependencies 参数?

dependencies 参数是 FastAPI 路径操作装饰器(如 @app.get@app.post 等)中的一个可选参数。它允许你在处理请求之前注入一个或多个依赖项。这些依赖项可以是函数、类或其他可调用对象。

2. 如何使用 dependencies 参数?

你可以在路径操作装饰器中使用 dependencies 参数来指定一个依赖项列表。每个依赖项都应该是 Depends 的实例,Depends 是 FastAPI 提供的一个特殊类,用于声明依赖项。

在这个例子中,common_parameters 函数被用作依赖项,并通过 dependencies 参数注入到 /items/ 路径操作中。

3. 依赖项的执行顺序

当请求到达路径操作时,FastAPI 会首先执行 dependencies 参数中指定的所有依赖项。这些依赖项会按照它们在列表中出现的顺序依次执行。每个依赖项可以返回一些数据,这些数据可以在路径操作函数中使用。

4. 依赖项的返回值

依赖项可以返回任何类型的数据,这些数据可以在路径操作函数中使用。例如,common_parameters 函数返回一个包含查询参数的字典,这个字典可以在路径操作函数中访问。

在这个例子中,commons 参数会接收 common_parameters 函数返回的字典。

5. 依赖项的错误处理

如果依赖项中发生错误(例如抛出 HTTPException),FastAPI 会立即停止执行后续的依赖项和路径操作函数,并返回相应的错误响应。

在这个例子中,如果当前用户不是 admincheck_admin_user 会抛出一个 HTTPException,FastAPI 会返回一个 403 错误响应,并且不会执行 admin_panel 函数。

纠错
反馈