Fast API 教程:创建 API 的框架2025年3月17日 | 阅读 7 分钟 在本教程中,我们将学习 FastAPI 框架以及如何创建 REST API。我们将了解 FastAPI 为何如此受欢迎,以及它与其他现有框架有何不同。我们还将讨论如何快速创建默认实现最佳实践的 Web API。通过本教程的学习,我们将能够开始创建生产就绪的 Web API,并能够针对特定用例进行深入研究。我们假设您熟悉 HTTP 及其工作原理、JSON 和 Python 基础知识。那么,让我们开始介绍 FastAPI。 什么是 FastAPI?FastAPI 是一个流行、现代、高性能的 Web 框架,用于创建 Web 服务或 API。它是一个基于 Python 的框架,带有标准类型提示。REST 是一组规则,概述了客户端和服务器之间共享数据的最佳实践。顾名思义,由于其开箱即用地支持 Python 3.6+ 的异步特性,它速度很快。 该框架于 2018 年发布,由 Sebastián Ramírez 创建。创建这个项目的一个有趣原因是他对当时可用的框架(如 Flask 和 DRF)不满意,因此他使用 Starlette 和 Pydantic 等工具创建了自己的框架。 现在,FastAPI 在行业中非常流行和抢手,甚至像 Uber、Netflix 和 Microsoft 这样的大型科技公司也在使用 FastAPI 来构建他们的应用程序。 FastAPI 功能FastAPI 提供了许多优于当前可用框架的功能。这些功能如下所示。
Flask 与 FastAPI现在,我们将看看 Flask 与 FastAPI 有何不同。Flask 是一个带有 ORM、缓存和身份验证的 Python 微框架。它旨在使用 Python 构建 Web 应用程序,并且旨在非常简单、快速和可靠。尽管拥有这些功能,我们为什么还需要使用 FastAPI 呢?让我们了解以下优缺点。 优点
缺点
用例Flask API 最适合以下类型的项目 -
现在让我们看看 FastAPI。 FastAPIFastAPI 是一个现代、高效、高性能的 Web 框架,用于构建 Web API。 优点
缺点
用例 它通常用于 -
FastAPI 入门理论讲得够多了,现在是时候实践一下,用 FastAPI 编写“Hello World”API 了。在本节中,我们将创建一个最简单的 FastAPI 应用程序。但在那之前,我们需要在我们的系统中安装它。与任何其他 Python 项目一样,最好从创建虚拟环境开始。创建虚拟环境并激活它。 第一步是使用 pip 安装 FastAPI 和 Uvicorn。 安装完成后,我们就可以学习如何使用它们了。FastAPI 是我们将用来创建 API 的框架,而 Uvicorn 是将使用我们构建的 API 来处理服务器请求的服务器。 注意 - 如果您在使用上述命令时遇到问题,您可以单独安装它们,如下所示。并且 创建第一个 API现在我们将创建一个显示“Hello World”消息的 API,并使用 Uvicorn 服务器运行它。我们还将解释其内部原理。 创建 main.py 文件并将上述代码粘贴到其中。现在我们有一个功能齐全的 API 应用程序,其中包含一些最佳实践。如果我们直接使用 Python 调用它,代码将无法自行运行。我们需要一个服务器程序来运行它。我们已经安装了 uvicorn,它是我们的服务器。 使用 Uvicorn 运行应用程序使用 uvicorn 运行实时服务器。 我们已经突出显示了我们的应用程序在本地机器上提供服务的 URL。 检查响应当我们在浏览器中打开 http://127.0.0.1:8000 时,它将发送如下 JSON 响应。 现在让我们分解一下代码 -
现在让我们分解 main.py 代码。 第 1 行:首先我们导入 FastAPI 类,它提供了 API 的所有功能。 第 3 行:我们初始化 FastAPI 类并将其命名为 app。它指的是上述命令中的 uvicorn。 第 5 行:我们创建一个 GET 路径。 第 6 行:我们创建一个异步函数,当用户访问该路径时执行。 第 7 行:每当访问该路由时,我们都会向客户端返回一个响应。 路径参数我们可以通过路径传递参数,并在函数中使用 Python 数据声明其类型。借助路径参数,我们无需构建正文来查找资源,它有助于将 API 调用范围缩小到单个资源。这些参数用大括号 {} 括起来,它们提供了一种控制特定资源表示方式的方法。让我们看下面的例子。 示例 - 我们使用路径参数值 student_id,它将作为参数 student_id 传递。 数据转换当我们运行上述 API 并访问 http://127.0.0.1:8000/students/4 时,我们将得到以下响应。 {'student_id': 4} 函数接收并返回的是 4,这是一个整数,而不是字符串(“3”)。因此,类型声明有助于自动请求解析。 查询参数查询参数是可选的。如果我们是在 API 函数中而不是在路径中传递参数,则它们会自动解释为查询参数。 让我们来理解以下代码。 示例 - 查询是问号后设置的键值对。在 URL 中,并用 & 符号分隔。 https://:8000/courses/?start=0&end=10 start 的值为 0,end 的值为 10,是查询参数。 请求正文请求正文是用于将数据从客户端发送到 API 的 JSON 数据。API 几乎总是必须发送响应正文。但客户端并非总是必须发送响应正文。有三种最常见的数据发送方法——put、patch 或 delete。我们也可以使用 GET 发送数据,但不建议这样做。 在 FastAPI 中,我们使用 Pydantic 模型来声明请求正文。Pydantic 工具提供了所有优点和方法。 首先,我们需要从 pydantic 导入 BaseModel,然后使用它来创建子类,定义我们希望接收的模式或数据形状。 让我们理解下面的例子。 示例 - 当我们运行 API 并导航到 http://127.0.0.1:8000/docs 时,它会给我们显示以下页面。 ![]() 让我们分解一下上面的代码 -
结论在本教程中,我们学习了 FastAPI 及其基本概念。我们已经了解了如何创建生产就绪的 API。我们简要介绍了 FastAPI 以及它与 Flask 的不同之处。我们学习了如何使用路径参数为每个项目获取唯一的 URL 路径,以及如何使用 Pydantic 在请求中接收 JSON 数据。除此之外,FastAPI 还有许多功能,我们将在即将到来的教程中探索。但是,您可以开始创建自己的高性能 API。 下一主题Python 中字符串的镜像字符 |
对象识别是计算机视觉广阔领域中的一项技术。该技术能够识别图像和视频中存在的对象并对其进行跟踪。对象识别,也称为对象检测,具有多种应用,如人脸识别、车辆识别……
5 分钟阅读
?如果你渴望在机器学习领域获得成功的职业生涯,让我们向你介绍另一个有趣的包,它的功能会让你惊叹不已。那么,让我们看看 statsmodels 是什么以及它有哪些功能?Statsmodels 是 Python 中一个流行的库,它使得...
阅读 3 分钟
在本文中,您将学习如何将给定数字转换为单词。有多种方法可以帮助将给定数字转换为单词。方法 1:一种方法如下:def convert_to_words(num): if num == 0: ...
7 分钟阅读
在本教程中,我们将了解如何解决获取二叉树的 Z 字形层序遍历的问题。示例:我们有一个像这样的二叉树:Tree: 1 ...
阅读 16 分钟
Blender是一款功能强大的开源3D创作软件,允许用户创建各种3D模型、动画和视觉效果。它包含一个Python API,使开发人员能够自动化和扩展Blender的功能。Blender的Python API是一个全面的模块库...
7 分钟阅读
Python 中“==”和“is”运算符的区别 在 Python 中比较对象时,身份运算符通常用于应使用相等运算符 == 的地方。在实践中,在尝试比较数据时使用 is 很少是一个好主意。身份运算符...
阅读 3 分钟
缺失数据是统计分析和机器学习中最常见且不可避免的问题。它们影响数据质量。这可能由于多种原因发生,例如用户在推荐系统中未回答问题、患者在治疗期间死亡或...
阅读9分钟
在本教程中,我们将学习使用 Python 的 enum 方法构建常量枚举。我们将讨论如何在 Python 中使用枚举及其成员,并使用新功能自定义枚举类。Python 中的枚举简介 还有许多其他编程...
阅读 12 分钟
Pandas 是一个功能强大的 Python 库,为处理表格数据提供了易于使用的数据操作工具。它构建在 NumPy 包之上,并为数据分析提供了高级接口。数据分析中最常见的任务之一是读取...
7 分钟阅读
如何在Python中从列表中删除元素 我们可以使用Python List数据结构将几种数据类型的项目存储在有序序列中。方括号([])用于封装数据,而逗号用于分隔条目(,)。Python提供了...
7 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India