如何使用 FastAPI 实现 RESTful API

阅读时长 6 分钟读完

在现代 web 开发中,使用 RESTful API 已经成为了一个标准。它可以帮助前端工程师和后端工程师更好地协同工作,提高应用程序的可扩展性和可维护性。而 FastAPI 则是一个快速(fast)且简洁(API)的 web 框架,它使用 Python 语言编写,支持异步编程,可以让我们更加高效地实现 RESTful API。下面,我们就来看看如何使用 FastAPI 实现 RESTful API。

安装 FastAPI

在开始之前,我们首先需要安装 FastAPI。可以通过以下命令来安装:

创建一个简单的 RESTful API

在介绍如何使用 FastAPI 来实现 RESTful API 之前,我们先来看一个简单的示例,看看 FastAPI API 看起来是什么样子的。下面是一个非常简单的示例,用于创建、更新、删除和获取用户数据:

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

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

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

-------- - --

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

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

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

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

我们来逐行分解代码:

  • 首先,我们导入了 FastAPI 和 pydantic(用于数据验证)。
  • 接下来,我们实例化了一个 FastAPI 实例。
  • 我们创建了一个名为 User 的简单数据模型。它具有两个字段:一个名为 name 的字符串和一个名为 email 的字符串。
  • 我们定义了一个空列表 users_db 来存储所有的用户数据。
  • 我们定义了一个名为 create_user 的路由,它接受一个名为 user 的 User 模型作为输入,将其添加到 users_db 列表中,并返回一个 JSON 格式的响应。
  • 我们定义了一个名为 update_user 的路由,它接受一个名为 user_id 的编号和一个名为 user 的 User 模型作为输入。如果编号对应的用户不存在,则返回一个 JSON 格式的“not found”响应;否则,我们将 users_db 中的用户数据更新为传入的 User 模型中的数据,并返回一个 JSON 格式的“ok”响应。
  • 我们定义了一个名为 delete_user 的路由,它接受一个名为 user_id 的编号。如果编号对应的用户不存在,则返回一个 JSON 格式的“not found”响应;否则,我们从 users_db 中删除该用户数据,并返回一个 JSON 格式的“ok”响应。
  • 最后,我们定义了一个名为 get_users 的路由,它会返回 users_db 中所有用户的数据。

通过以上示例,我们可以看到使用 FastAPI 构建 RESTful API 非常简单且易于阅读,同时 FastAPI 还提供了很多有用的工具来加速我们的开发工作。

实现数据验证

除了实现路由,FastAPI 及其依赖 pydantic 还使得数据验证成为了一个非常简单的事情。上面的示例已经展示了如何定义一个数据模型,但需要注意的是,我们还可以在定义数据模型时添加一些验证器来确保数据的正确性。例如,我们可以使用 MaxLength 和 EmailValidator 来验证 email 字段:

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

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

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

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

在上面的代码中,我们添加了两个 validator——email_must_contain_atsymbol 和 name_length——来确保 email 字段中必须包含“@”符号,name 字段的长度必须在 3 到 50 个字符之间。如果数据不符合验证器的要求,会抛出一个 ValueError 异常。

实现异步处理

FastAPI 还支持异步处理,也就是异步编程。在传统的 web 开发模型中,每个请求都是同步处理的,只有当请求处理完毕,服务器才会返回响应。但在异步开发模型中,请求的处理过程是异步的,服务器可以在等待请求处理完毕的同时处理其他请求。这种处理方式可以大大提高 web 应用程序的吞吐量。

要在 FastAPI 中实现异步处理很简单,只需在路由和函数定义前面加上 async 关键字,就可以将其定义为异步处理。

例如,我们可以将创建新用户的路由改为异步处理:

在上面的代码中,我们在函数体内使用 asyncio.sleep(1) 来模拟一个耗时的操作。由于函数被定义为异步处理,因此在执行 sleep 函数时,我们可以将控制权交给主事件循环,允许其他请求也有机会被处理。

结论

在本文中,我们已经学习了如何使用 FastAPI 实现 RESTful API。FastAPI 是一个快速、简洁且易于使用的 web 框架,特别适用于构建高效和可靠的 RESTful API。与其他 Python web 框架相比,FastAPI 的性能和效率得到了显着提高,它是 Python web 开发的新趋势。

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

纠错
反馈