如何使用 FastAPI 开发高性能 RESTful API

阅读时长 7 分钟读完

FastAPI 是一个基于 Python 3.7+ 的现代化 Web 框架,旨在帮助开发者更快速地构建 RESTful API。FastAPI 采用了自动文档 API、数据验证、依赖注入等功能,可以大大降低开发 API 的难度,提高开发效率和代码质量。

在本文中,我们将介绍如何使用 FastAPI 开发高性能 RESTful API,并提供详细的学习和指导意义。我们将以一个简单的案例来演示 FastAPI 的用法,并提供完整的示例代码。

安装并运行 FastAPI

首先,我们需要安装 FastAPI。可以使用 pip 工具安装:

同时,我们还需要安装一个 ASGI 服务器,比如 Uvicorn:

安装完成后,我们可以编写一个简单的 FastAPI 应用程序,并在 Uvicorn 中运行它。在项目文件夹下创建一个 main.py 文件,编写以下代码:

在终端中,通过以下命令即可启动应用程序:

执行该命令后,我们可以在浏览器中访问 http://localhost:8000/,看到以下内容:

这个简单的示例演示了如何使用 FastAPI 快速构建 API。接下来,我们将介绍如何使用 FastAPI 实现更为复杂的 API 功能。

实现数据验证和处理

FastAPI 支持使用 Pydantic 来进行数据验证和处理。Pydantic 是一个数据验证和序列化工具库,可以帮助我们定义数据模型,并对输入和输出数据进行验证和处理,大大提高了代码的健壮性和可维护性。下面我们将介绍如何在 FastAPI 中使用 Pydantic 实现数据验证和处理。

定义数据模型

首先,我们需要定义数据模型。在 main.py 中添加以下代码:

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

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

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

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

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

这里,我们定义了一个数据模型 Item,包含 idtitledescription 三个字段。其中 ItemCreate 继承自 ItemBase,用于创建新的 Item 对象。

实现数据验证和处理

接下来,我们需要在 API 中调用上述数据模型实现数据验证和处理。修改 main.py 文件,将 read_root 函数替换为以下代码:

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

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

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

这里我们使用 @app.post 来定义 POST 请求,并定义一个名称为 item 的参数。ItemCreate 表示输入参数的类型,response_model 定义输出参数的类型为 Item。注意,在参数列表中添加了一个 db: Session = Depends(SessionLocal),该参数是一个 Session 对象,用于与数据库进行交互。

实现数据库交互

最后,我们需要实现数据库交互。这里我们使用 SQLAlchemy 库来处理数据库操作。我们需要编写数据库实体类和数据库 CRUD 操作类。

数据库实体类

models.py 文件中添加以下代码:

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

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

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

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

这里我们定义了一个 Item 实体类,对应到数据库中的 items 表。

数据库 CRUD 操作类

crud.py 文件中添加以下代码:

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

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

这里我们定义了一个 create_item 方法,用于创建新的 Item 对象并将其加入数据库。db: Session 参数表示与数据库交互的 Session 对象,item: schemas.ItemCreate 表示输入参数的类型。

完整代码

最终,我们可以在 main.py 文件中添加完整代码:

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

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

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

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

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

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

我们还需要在项目根目录下创建以下文件:

  • database.py:用于与数据库建立连接;
  • models.py:用于定义数据库实体类;
  • crud.py:用于定义数据库 CRUD 操作;
  • schemas.py:用于定义数据模型。

总结

本文介绍了如何使用 FastAPI 构建高性能 RESTful API。我们通过一个简单的案例演示了 FastAPI 的基本用法,并使用 Pydantic 实现了数据验证和处理。最后,我们还使用 SQLAlchemy 实现了与数据库的交互。FastAPI 的自动文档 API、数据验证、依赖注入等功能,大大简化了 RESTful API 的开发过程,为开发者带来了极大的便捷。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64902d0648841e9894e5950e

纠错
反馈