FastAPI 的依赖注入系统是如何工作的?

推荐答案

FastAPI 的依赖注入系统通过 Python 的类型注解和依赖项函数来实现。依赖项函数可以是一个普通的 Python 函数,也可以是异步函数。FastAPI 会自动解析这些依赖项,并在需要时注入到路径操作函数中。依赖注入系统的主要特点包括:

  1. 依赖项声明:通过函数参数的类型注解声明依赖项。
  2. 依赖项解析:FastAPI 自动解析依赖项,并确保它们在路径操作函数执行前被调用。
  3. 依赖项共享:依赖项可以在多个路径操作函数之间共享,避免重复代码。
  4. 依赖项层级:依赖项可以嵌套,形成依赖项层级结构。

本题详细解读

1. 依赖项声明

在 FastAPI 中,依赖项通常通过函数参数的类型注解来声明。例如:

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

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

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

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

在这个例子中,common_parameters 函数是一个依赖项,它通过 Depends 注入到 read_items 路径操作函数中。

2. 依赖项解析

FastAPI 会自动解析依赖项,并确保它们在路径操作函数执行前被调用。例如,在上面的代码中,common_parameters 函数会在 read_items 函数执行前被调用,并将结果传递给 read_items 函数。

3. 依赖项共享

依赖项可以在多个路径操作函数之间共享。例如:

在这个例子中,common_parameters 依赖项被 read_itemsread_users 两个路径操作函数共享。

4. 依赖项层级

依赖项可以嵌套,形成依赖项层级结构。例如:

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

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

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

在这个例子中,query_or_cookie_extractor 依赖项依赖于 query_extractor 依赖项,形成了依赖项层级结构。

纠错
反馈