FastAPI 中如何定义路由?

推荐答案

在 FastAPI 中,定义路由的方式是通过使用装饰器 @app.get()@app.post()@app.put()@app.delete() 等来定义不同的 HTTP 方法的路由。以下是一个简单的示例:

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

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

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

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

在这个示例中:

  • @app.get("/") 定义了一个处理 GET 请求的路由,路径为根路径 /
  • @app.post("/items/") 定义了一个处理 POST 请求的路由,路径为 /items/

本题详细解读

1. 路由的基本概念

在 FastAPI 中,路由是指将 HTTP 请求映射到相应的处理函数的过程。每个路由都对应一个特定的 URL 路径和 HTTP 方法(如 GET、POST、PUT、DELETE 等)。

2. 路由的定义方式

FastAPI 使用装饰器来定义路由。常见的装饰器包括:

  • @app.get(path):定义处理 GET 请求的路由。
  • @app.post(path):定义处理 POST 请求的路由。
  • @app.put(path):定义处理 PUT 请求的路由。
  • @app.delete(path):定义处理 DELETE 请求的路由。

其中,path 是 URL 路径,可以是字符串或包含路径参数的路径。

3. 路径参数和查询参数

FastAPI 支持在路径中使用路径参数和查询参数。例如:

在这个示例中:

  • item_id 是路径参数,类型为 int
  • q 是查询参数,类型为 str,并且是可选的。

4. 请求体和响应模型

FastAPI 支持使用 Pydantic 模型来定义请求体和响应模型。例如:

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

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

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

在这个示例中,Item 是一个 Pydantic 模型,用于定义请求体的结构。

5. 异步路由处理

FastAPI 支持异步路由处理函数。例如:

异步路由处理函数使用 async def 定义,适用于处理 I/O 密集型操作。

6. 路由的依赖注入

FastAPI 支持依赖注入,可以在路由处理函数中注入依赖项。例如:

在这个示例中,common_parameters 是一个依赖项,通过 Depends 注入到 read_items 函数中。

7. 路由的路径操作

FastAPI 提供了丰富的路径操作功能,包括路径参数、查询参数、请求体、响应模型、依赖注入等,使得路由定义更加灵活和强大。

纠错
反馈