FastAPI 中如何使用 Query 定义查询参数的元数据?

推荐答案

在 FastAPI 中,可以使用 Query 来定义查询参数的元数据。Query 是一个函数,用于为查询参数提供额外的元数据,如默认值、描述、正则表达式验证等。以下是一个示例:

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

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

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

在这个示例中,q 是一个查询参数,使用了 Query 来定义其元数据。Query 的第一个参数是默认值(None),后面的参数用于定义元数据,如别名、标题、描述、最小长度、最大长度、正则表达式验证等。

本题详细解读

1. Query 的基本用法

Query 是 FastAPI 提供的一个函数,用于为查询参数添加元数据。它的第一个参数是查询参数的默认值,后面的参数用于定义元数据的各种属性。

2. Query 的常用参数

  • default: 查询参数的默认值。如果客户端没有提供该参数,将使用此默认值。
  • alias: 查询参数的别名。如果客户端传递的参数名与 Python 变量名不同,可以使用 alias 来映射。
  • title: 查询参数的标题,通常用于生成文档。
  • description: 查询参数的描述,通常用于生成文档。
  • min_length: 查询参数的最小长度。
  • max_length: 查询参数的最大长度。
  • regex: 查询参数的正则表达式验证规则。
  • deprecated: 标记该查询参数是否已弃用。

3. 示例解析

在示例中,q 是一个查询参数,使用了 Query 来定义其元数据:

  • default=None: 如果客户端没有提供 q 参数,默认值为 None
  • alias="item-query": 客户端可以使用 item-query 作为参数名来传递 q 的值。
  • title="Query string": 在生成的文档中,q 参数的标题为 "Query string"。
  • description="Query string for the items to search in the database": 在生成的文档中,q 参数的描述为 "Query string for the items to search in the database"。
  • min_length=3: q 参数的最小长度为 3。
  • max_length=50: q 参数的最大长度为 50。
  • regex="^[a-zA-Z0-9_]*$": q 参数必须匹配正则表达式 ^[a-zA-Z0-9_]*$
  • deprecated=True: 标记 q 参数为已弃用。

4. 使用场景

Query 通常用于以下场景:

  • 需要为查询参数提供默认值。
  • 需要为查询参数添加描述或标题,以便生成更详细的 API 文档。
  • 需要对查询参数进行验证,如长度限制、正则表达式匹配等。
  • 需要标记某些查询参数为已弃用。

通过使用 Query,可以更灵活地定义查询参数的行为和元数据,从而提高 API 的可读性和可维护性。

纠错
反馈