FastAPI 中如何创建依赖项?

推荐答案

在 FastAPI 中,创建依赖项可以通过定义一个函数或类,并使用 Depends 来声明依赖关系。以下是一个简单的示例:

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

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

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

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

在这个示例中,common_parameters 是一个依赖项函数,它返回一个包含查询参数的字典。read_items 路由函数通过 Depends 声明了对 common_parameters 的依赖。

本题详细解读

1. 依赖项的基本概念

依赖项是 FastAPI 中用于处理共享逻辑的一种机制。它们可以用于验证请求、数据库连接、权限检查等场景。依赖项可以是函数、类或异步函数。

2. 创建依赖项

依赖项通常是一个函数,它可以接受参数并返回一个值。这个值可以是任何类型的数据,例如字典、对象等。依赖项函数可以像普通函数一样定义:

3. 使用 Depends 声明依赖

在路由函数中,可以通过 Depends 来声明对某个依赖项的依赖。Depends 是一个特殊的类,它接受一个依赖项函数作为参数:

在这个例子中,read_items 函数依赖于 common_parameters 函数。当请求到达 /items/ 路由时,FastAPI 会自动调用 common_parameters 函数,并将其返回值传递给 read_items 函数。

4. 依赖项的嵌套

依赖项可以嵌套使用,即一个依赖项可以依赖于另一个依赖项。例如:

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

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

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

在这个例子中,get_user 依赖于 get_db,而 read_user 又依赖于 get_user

5. 异步依赖项

如果依赖项需要执行异步操作,可以将其定义为异步函数:

6. 依赖项的生命周期

依赖项可以有不同的生命周期。默认情况下,依赖项在每次请求时都会被调用。如果依赖项需要在整个应用程序生命周期内共享,可以使用 lru_cachesingleton 模式来缓存依赖项的结果。

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

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

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

在这个例子中,get_settings 的结果会被缓存,直到应用程序重启。

纠错
反馈