FastAPI 是一个基于 Python 3.7+ 的现代化 Web 框架,旨在帮助开发者更快速地构建 RESTful API。FastAPI 采用了自动文档 API、数据验证、依赖注入等功能,可以大大降低开发 API 的难度,提高开发效率和代码质量。
在本文中,我们将介绍如何使用 FastAPI 开发高性能 RESTful API,并提供详细的学习和指导意义。我们将以一个简单的案例来演示 FastAPI 的用法,并提供完整的示例代码。
安装并运行 FastAPI
首先,我们需要安装 FastAPI。可以使用 pip 工具安装:
pip install fastapi
同时,我们还需要安装一个 ASGI 服务器,比如 Uvicorn:
pip install uvicorn
安装完成后,我们可以编写一个简单的 FastAPI 应用程序,并在 Uvicorn 中运行它。在项目文件夹下创建一个 main.py
文件,编写以下代码:
from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"Hello": "World"}
在终端中,通过以下命令即可启动应用程序:
uvicorn main:app --reload
执行该命令后,我们可以在浏览器中访问 http://localhost:8000/
,看到以下内容:
{"Hello": "World"}
这个简单的示例演示了如何使用 FastAPI 快速构建 API。接下来,我们将介绍如何使用 FastAPI 实现更为复杂的 API 功能。
实现数据验证和处理
FastAPI 支持使用 Pydantic 来进行数据验证和处理。Pydantic 是一个数据验证和序列化工具库,可以帮助我们定义数据模型,并对输入和输出数据进行验证和处理,大大提高了代码的健壮性和可维护性。下面我们将介绍如何在 FastAPI 中使用 Pydantic 实现数据验证和处理。
定义数据模型
首先,我们需要定义数据模型。在 main.py
中添加以下代码:
-- -------------------- ---- ------- ---- ------ ------ ----- -------- ---- -------- ------ --------- ----- -------------------- ------ --- ------------ ------------- - ---- ----- --------------------- ---- ----- --------------- --- --- ----- ------- -------- - ----
这里,我们定义了一个数据模型 Item
,包含 id
、title
和 description
三个字段。其中 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